据我所知,DataTriggers在WinRT中不受支持。但是,如何解决这个问题呢?
我有一个模型,它实现了一个"Selected“属性,扩展了INotifyPropertyChanged。如果选中的是True,我想将按钮的边框更改为红色。我只是不知道如何将属性更改链接到触发状态更改。
模型
class MyObject : INotifyPropertyChanged
{
public MyObject()
{
Selected = true;
}
private bool _selected;
public bool Selected
{
get { return _selected; }
set { _selected = value; OnPropertyChanged("Selected"); }
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}XAML
<Grid>
<Button Margin="131,97,171,124" Content="Hello!" DataContext="MyObject" d:DataContext="{d:DesignInstance local:MyObject}">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="Aqua"/>
</Border.BorderBrush>
<StackPanel>
<TextBlock Text="{TemplateBinding Content}"/>
<TextBlock Text="{Binding Selected}"/>
</StackPanel>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>发布于 2012-10-25 21:55:47
您可以使用简单转换器(IValueConverter)。然后将边框属性绑定到Selected属性中的ViewModel中:
<Border BorderBrush="{Binding Selected, Converter={StaticResource MyConverter}}">当然,您需要将资源放在页面资源或应用程序资源字典中的某个地方:
<mynamespace:MyConverter x:Key="MyConverter"/>然后在转换器中,检查该值是否为True,并返回一个红色彩刷。
(我只是快速地写了这个,没有测试,但是你也可以在谷歌上搜索如何轻松地完成这个任务)
发布于 2012-10-27 06:21:08
https://stackoverflow.com/questions/13076146
复制相似问题