我是一个自定义用户控件,是一种特殊类型的滑块。我可以从对象的绑定中获取较低和较高的值,如:
{Binding ElementName=slider, Path=LowerValue};
{Binding ElementName=slider, Path=UpperValue};
我想在放入Label
之前重新格式化这个数字。我已经尝试将一些c#直接嵌入到我的WPF中,但我不知道如何在c#中获取值。这是我尝试过的不起作用的地方:
<![CDATA[
double min = {Binding ElementName=slider, Path=LowerValue};
double max = {Binding ElementName=slider, Path=UpperValue};
if (min == 1) { label.Content = "24:00:00"; }
else { label.Content = TimeSpan.FromHours(min).ToString(@"hh\:mm\:ss"); }
if (max == 1) { label_Copy.Content = "24:00:00"; }
else { label_Copy.Content = TimeSpan.FromHours(max).ToString(@"hh\:mm\:ss"); }
]]>
</x:Code>
答案 0 :(得分:1)
如果使用MVVM,这种事情会容易得多。创建视图模型并添加两个属性以及更新函数:
public class TestViewModel : ViewModelBase
{
private int _TimeVal;
public int TimeVal
{
get { return this._TimeVal; }
set
{
this._TimeVal = value;
RaisePropertyChanged(() => this.TimeVal);
UpdateText();
}
}
private string _TimeText;
public string TimeText
{
get { return this._TimeText; }
set { this._TimeText = value; RaisePropertyChanged(() => this.TimeText); }
}
public TestViewModel()
{
UpdateText(); // force initial value
}
private void UpdateText()
{
this.TimeText = TimeSpan.FromHours(this.TimeVal).ToString(@"hh\:mm\:ss");
}
}
然后在您的XAML中,您只需绑定到这些属性:
<Slider Minimum="0" Maximum="100" Value="{Binding TimeVal}"/>
<TextBox Text="{Binding Path=TimeText}" />
答案 1 :(得分:1)
1.定义一个将值转换为滑块和转换器的转换器。返回格式化文本:
public class SliderToContentConverter:IValueConverter
{
....Convert(object value,...)
{
var slider =value as slider;
if(slider!=null)
{
double min = slider.LowerValue;
double max = slider.UpperValue;
if (min == 1)
{ return "24:00:00"; }
else
{ return TimeSpan.FromHours(min).ToString(@"hh\:mm\:ss"); }
if (max == 1)
{ return "24:00:00"; }
else { return TimeSpan.FromHours(max).ToString(@"hh\:mm\:ss");
}
return null;
}
}
2.使用密钥在Resources中添加转换器 3.为Label.Content添加绑定:
<Label x:name=label_copy Content={Binding ElementName=slider,Converter={StaticResource con}/>
答案 2 :(得分:-1)
<slider LowerValue={Binding lval} UpperValue={Binding uval}/>
在c#
中double _lval;
double lval
{
get
{
return _lval;
}
set
{
_lval=value;
}
}
值是您想要的