相关疑难解决方法(0)

将MultiBinding转换器和Trigger混合在一起时发出问题

设置样式<UserControl.Resources>(假设转换器返回红色)

<Style x:Key="FieldToValidate" TargetType="{x:Type TextBox}">
    <Setter Property="Background">
        <Setter.Value>
            <MultiBinding Converter="{StaticResource VisualQueueOnErrorConverter}">
                <Binding RelativeSource="{RelativeSource self}" Path="Name" />
                <Binding RelativeSource="{RelativeSource AncestorType={x:Type DockPanel}}" Path="DataContext.ErrorFieldName" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" />
            </MultiBinding>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <Trigger Property="Background" Value="Red">
            <Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource self}}" />
            <Setter Property="Foreground" Value="White" />
        </Trigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

和控制:

<TextBox  Name="FirstName" Text="{Binding FirstName}" Style="{StaticResource FieldToValidate}">  
Run Code Online (Sandbox Code Playgroud)

FirstName当MultiBinding转换器将背景颜色更改为红色时,预期结果是场获得焦点并且前景色变为白色,但是当场的背景变为红色时,它不会获得焦点,也不会获得新的前景色.

几乎看起来XAML解析器在属性设置器的MultiBinding转换器之前处理Trigger .

欢迎任何和所有建议!

.net xaml triggers multibinding

12
推荐指数
1
解决办法
1万
查看次数

WPF DataTrigger值中的绑定

好吧,这可能是一个简单的问题,但我无法为此找到解决方案。

我有一个DataTrigger

<DataTrigger Binding="{Binding Quantity}" Value="0">
Run Code Online (Sandbox Code Playgroud)

现在我想绑定Value到一个变量myVariable。因此,如果myVariable更改的值,Value则DataTrigger 的属性也会更改。

我已经尝试设置Binding,但是我想它不可能设置它。还有其他方法可以动态设置此值。

编辑:我尝试创建自己的数据触发器。但是我仍然无法使事情正常进行。

这是代码:

DataTrigger d = new DataTrigger();
d.Binding = new Binding("Quantity");
d.Value = 1;
Setter s = new Setter(BackgroundProperty, Brushes.Red);
d.Setters.Add(s);

Style st = new Style(typeof(DataGridRow));
st.Triggers.Add(d);
this.Resources.Add(this.Resources.Count, st);
Run Code Online (Sandbox Code Playgroud)

我想使用以上代码代替以下xaml

<Page.Resources>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Quantity}" Value="1">
                <Setter Property="Background" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Page.Resources>
Run Code Online (Sandbox Code Playgroud)

谢谢。

.net c# wpf

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×2

c# ×1

multibinding ×1

triggers ×1

wpf ×1

xaml ×1