【发布时间】:2012-01-01 21:02:56
【问题描述】:
我有一个从 TextBox 继承的自定义控件,它具有称为 State 的依赖属性。 状态是枚举,有 4 个选项 {Mismatch, Wait, Ok, None}
泛型如下所示:
<Style TargetType="{x:Type local:CustomTextBox}">
<Style.Triggers>
<Trigger Property="State" Value="Mismatch">
<Setter Property="Background" Value="{StaticResource MismatchBrush}"/>
</Trigger>
</Style.Triggers>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomTextBox}">
<Border Background="{TemplateBinding Background}"
BorederBrush="{TemplateBinding BorederBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
我有一个名为 MyData 的类,其属性为 DataState、Sent、Recieved,每个属性都实现了 INotifyPropertyChanged。
在我的主窗口中,xaml 中有以下行:
<custom:CustomTextBox State="{Binding BindingData.DataState}" Text="{Binding BindedData.Sent}"/>
在我的视图模型中,我有来自 MyData 类型的字段,该字段称为 BindedData,当用户发送一些数据时,BindedData.Sent 会发生变化,然后如果发生某些逻辑,则 BindedData 状态会更改为 Mismatch,并且 customTextBox 背景需要采用某种颜色.
问题是背景没有改变意味着状态绑定不起作用,文本绑定也不起作用。
我知道绑定是如何工作的,以及它在其他情况下对我的工作(不使用自定义控件),在这里我还检查了调试,我看到一切正常,所以我对自定义控件有什么问题吗?
提前致谢!
【问题讨论】:
标签: wpf xaml data-binding mvvm custom-controls