GridViewRow上的条件背景基于DataGrid旁边的文本框值

问题描述 投票:0回答:1

我如何将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上设置“绑定”。
c# .net wpf xaml telerik
1个回答
0
投票
我将文本框的值作为属性添加到了项目中,就像您说的那样。每当我填写数据网格时,我都会为每个项目填写文本框的当前值。尽管这似乎不是最优雅的方法,但确实可以做到。
© www.soinside.com 2019 - 2024. All rights reserved.