.net 如何在同一WPF控件上绑定多个属性?

.net 如何在同一WPF控件上绑定多个属性?,.net,wpf,vb.net,xaml,data-binding,.net,Wpf,Vb.net,Xaml,Data Binding,我可以将数据源绑定到显示文本的文本块。但是,如果选中复选框foo的值,我想将Fontweight设置为粗体。我正在尝试使用IMultiValueConverter来实现这一点,但到目前为止运气不佳。知道我做错了什么吗 <CheckBox Name="foo"/> <TextBlock Name="bar" Text="{Binding Path=Name}"> <TextBlock.FontWeight> <MultiBindin

我可以将数据源绑定到显示文本的文本块。但是,如果选中复选框foo的值,我想将Fontweight设置为粗体。我正在尝试使用IMultiValueConverter来实现这一点,但到目前为止运气不佳。知道我做错了什么吗

<CheckBox Name="foo"/>
<TextBlock Name="bar" Text="{Binding Path=Name}">
    <TextBlock.FontWeight>
        <MultiBinding Converter="{StaticResource FontConverter}">
            <Binding RelativeSource="{RelativeSource self}" Path="???"/>
            <Binding ElementName="???" />
        </MultiBinding>
    </TextBlock.FontWeight>
</TextBlock>

如果您想使用转换器,您应该绑定到CheckBox.IsChecked{Binding IsChecked,ElementName=foo},您不需要多重绑定,然后在Convert中将值强制转换为bool,并在此基础上返回normal或bold,最好作为实际的FontWeight,而不是字符串

然而,在这里,我推荐一个关于IsChecked的例子

e、 g


另外请注意,如果在本地设置FontWeight,触发器将不会执行任何操作

基于XAML中的条件的任何操作都应在触发器或DataTrigger中执行。将值从一个值转换为另一个值时,应使用转换器

下面是一个例子:

<CheckBox Name="foo"/>
<TextBlock Name="bar" Text="{Binding Path=Name}">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="FontWeight" Value="Normal" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=foo, Path=IsChecked}" Value="True">
                    <Setter Property="FontWeight" Value="Bold" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

哦,糟糕,当我写我的答案时,你的答案不完整,没有代码样本。发布后,我看到您已经更新了您的,以更完整的一个w/代码示例。哦,好吧,+1指出了DP优先级,并发布了与我相同的内容:@Rachel:我们之前讨论过这一点,代码不是必须的,我甚至不知道这次为什么添加了一些。毕竟,经验表明,如果您注意到,人们在尝试添加代码时经常会犯错误。@HB我注意到了,谢谢:我还是更喜欢发布代码示例,因为我可以更轻松地从代码示例向后工作以找出问题,然后向前工作,而不知道我的工作方向。Egads。。。我只是意识到我没有充分描述我想要做好的事情。不过,我会在一个新问题中提出这一点,以免把事情弄得乱七八糟:
<CheckBox Name="foo"/>
<TextBlock Name="bar" Text="{Binding Path=Name}">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="FontWeight" Value="Normal" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=foo, Path=IsChecked}" Value="True">
                    <Setter Property="FontWeight" Value="Bold" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>