Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wpf在Groupbox IsEnabled属性中指定多个数据绑定_Wpf_Data Binding - Fatal编程技术网

wpf在Groupbox IsEnabled属性中指定多个数据绑定

wpf在Groupbox IsEnabled属性中指定多个数据绑定,wpf,data-binding,Wpf,Data Binding,我有一个GroupBox,其IsEnabled属性是通过ViewModel上的属性设置的,如下所示:- <GroupBox> <Canvas IsEnabled="{Binding CurrentRec.Current_Selected_Category.NoBonus,Converter={StaticResource TFC}}"> <Label Content="Amount:" Width="55" Canvas.Left="9" C

我有一个GroupBox,其IsEnabled属性是通过ViewModel上的属性设置的,如下所示:-

<GroupBox>
    <Canvas IsEnabled="{Binding CurrentRec.Current_Selected_Category.NoBonus,Converter={StaticResource TFC}}">
        <Label Content="Amount:" Width="55" Canvas.Left="9" Canvas.Top="-2"/>
        <TextBox x:Name="txtBonusAmount" Width="76"  Canvas.Left="12" Canvas.Top="20" Text="Some text"/>
        <Label Content="Bonus:" Canvas.Top="38" Width="54" Canvas.Left="10"/>
        <TextBox x:Name="txtBonus" Width="76"  Canvas.Left="13" Canvas.Top="58" Text="Some Text"/>
    </Canvas>
<Groupbox>


我的viewmodel中有多个属性影响Canvas的IsEnabled属性。如何针对Canvas的IsEnabled属性指定这些附加属性

多绑定
与转换器一起使用:

<Window.Resources>
    <local:OrConverter x:Key="OrConverter" />
    <local:AndConverter x:Key="AndConverter" />
</Window.Resources>
<GroupBox>
    <GroupBox.Resources>
        <local:MultiConverter x:Key="conv" />
    </GroupBox.Resources>
    <Canvas>
        <Canvas.IsEnabled>
            <MultiBinding Converter="{StaticResource conv}">
                <Binding Path="CurrentRec.Current_Selected_Category.NoBonus" />
                <Binding Path="TheOtherProperty" />
            </MultiBinding>
        </Canvas.IsEnabled>
        <Label Content="Amount:" Width="55" Canvas.Left="9" Canvas.Top="-2"/>
        <TextBox x:Name="txtBonusAmount" Width="76"  Canvas.Left="12" Canvas.Top="20" Text="Some text"/>
        <Label Content="Bonus:" Canvas.Top="38" Width="54" Canvas.Left="10"/>
        <TextBox x:Name="txtBonus" Width="76"  Canvas.Left="13" Canvas.Top="58" Text="Some Text"/>
    </Canvas>
</GroupBox>

多重绑定
与转换器一起使用:

<GroupBox>
    <GroupBox.Resources>
        <local:MultiConverter x:Key="conv" />
    </GroupBox.Resources>
    <Canvas>
        <Canvas.IsEnabled>
            <MultiBinding Converter="{StaticResource conv}">
                <Binding Path="CurrentRec.Current_Selected_Category.NoBonus" />
                <Binding Path="TheOtherProperty" />
            </MultiBinding>
        </Canvas.IsEnabled>
        <Label Content="Amount:" Width="55" Canvas.Left="9" Canvas.Top="-2"/>
        <TextBox x:Name="txtBonusAmount" Width="76"  Canvas.Left="12" Canvas.Top="20" Text="Some text"/>
        <Label Content="Bonus:" Canvas.Top="38" Width="54" Canvas.Left="10"/>
        <TextBox x:Name="txtBonus" Width="76"  Canvas.Left="13" Canvas.Top="58" Text="Some Text"/>
    </Canvas>
</GroupBox>

将多值绑定与转换器一起使用。使用多值转换器,如中的示例。将多值绑定与转换器一起使用。使用多值转换器,如中的示例。
<GroupBox>
    <GroupBox.Resources>
        <local:MultiConverter x:Key="conv" />
    </GroupBox.Resources>
    <Canvas>
        <Canvas.IsEnabled>
            <MultiBinding Converter="{StaticResource conv}">
                <Binding Path="CurrentRec.Current_Selected_Category.NoBonus" />
                <Binding Path="TheOtherProperty" />
            </MultiBinding>
        </Canvas.IsEnabled>
        <Label Content="Amount:" Width="55" Canvas.Left="9" Canvas.Top="-2"/>
        <TextBox x:Name="txtBonusAmount" Width="76"  Canvas.Left="12" Canvas.Top="20" Text="Some text"/>
        <Label Content="Bonus:" Canvas.Top="38" Width="54" Canvas.Left="10"/>
        <TextBox x:Name="txtBonus" Width="76"  Canvas.Left="13" Canvas.Top="58" Text="Some Text"/>
    </Canvas>
</GroupBox>
public class MultiConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        bool noBonus = System.Convert.ToBoolean(values[0]);
        bool theOtherSourceProperty = System.Convert.ToBoolean(values[1]);

        //..

        return noBonus && theOtherSourceProperty;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}