我如何将TextBox的值传递给StyleSelector,以便可以返回正确的Style?
我希望能够通过将行中显示的对象的属性与输入控件的值(例如TextBox)进行比较来选择行的背景([有条件)。
我制作了一个StyleSelector类,其中包含两种样式和一个属性以包含TextBox的值。 public class OutOfBoundsRowStyleSelector : StyleSelector
{
public double FilterValue { get; set; }
public Style DefaultStyle { get; set; }
public Style OutOfBoundsStyle { get; set; }
public override Style SelectStyle(object item, DependencyObject container)
{
// Compare FilterValue to property of item and return the appropriate style here.
return DefaultStyle;
}
}
我像这样添加了一个TextBox并将Value绑定到ViewModel中的属性。
<TextBox x:Name="txtBoundsFilter" Text="{Binding BoundsFilter}"/>
我在xaml中填充了这些样式,并试图将TextBox值绑定到StyleSelector类中的属性。
<Classes:OutOfBoundsRowStyleSelector x:Key="OutOfBoundsRowStyleSelector"> <Classes:OutOfBoundsRowStyleSelector.DefaultStyle> <Style TargetType="telerik:GridViewRow"> <Setter Property="Background" Value="White"/> </Style> </Classes:OutOfBoundsRowStyleSelector.DefaultStyle> <Classes:OutOfBoundsRowStyleSelector.OutOfBoundsStyle> <Style TargetType="telerik:GridViewRow"> <Setter Property="Background" Value="Red" /> </Style> </Classes:OutOfBoundsRowStyleSelector.OutOfBoundsStyle> <Classes:OutOfBoundsRowStyleSelector.FilterValue> <Binding Path="BoundsFilter" Mode="TwoWay"/> </Classes:OutOfBoundsRowStyleSelector.FilterValue> </Classes:OutOfBoundsRowStyleSelector>
最后我将RowStyleSelector添加到DataGrid。
<telerik:RadGridView x:Name="dataGrid" ItemsSource="{Binding BatchList} RowStyleSelector="{StaticResource OutOfBoundsRowStyleSelector}" >
很遗憾,您不能使用这样的绑定。我收到以下错误消息:无法在类型为'OutOfBoundsRowStyleSelector'的'FilterValue'属性上设置'Binding'。只能在DependencyObject的DependencyProperty上设置“绑定”。