none
mvvm模式下,Button的某个bool属性绑定了VIewModel对象的一个bool属性,该button的bool属性发生变动时,Button的内容怎么做出预设的相应改变? RRS feed

  • 问题

  • mvvm模式下,Button的某个bool属性绑定了VIewModel对象的一个bool属性,该button的bool属性发生变动时,Button的内容怎么做出预设的相应改变?

    例如某个button的IsEnable变成false时,button的content属性就替换成“不可点击”,当button的IsEnable=true时,Button的content属性替换成"可点击"。这个要怎么做?


    2017年4月23日 12:49

答案

  • Hi 便携式家园,

    根据你的描述,你可以使用值转换器来处理,下面的代码供你参考。
    创建一个转换器类,继承自IValueConverter接口:

    public class ButtonEnabletoContentConverter : IValueConverter
       {
           public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
           {
               if ((bool)value == false)
               {
                   return "不可点击";
               }
               else
               {
                   return "可点击";
               }
           }
    //如果需要反向转化,需要在下面的方法中实现
           public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
           {
               throw new NotImplementedException();
           }
       }

    xmal里引用转化器作为资源:

    <Window.Resources>
            <local:ButtonEnabletoContentConverter x:Key="buttonEnabletoContentConverter"/>
    </Window.Resources>

    绑定转化器:

    <Grid>
            <StackPanel>
                <Button x:Name="MyButton1" Height="50" IsEnabled="False" Content="{Binding ElementName=MyButton1,Path=IsEnabled,Converter={StaticResource buttonEnabletoContentConverter}}" />
                <Button x:Name="MyButton2" Height="50" IsEnabled="True" Content="{Binding ElementName=MyButton2,Path=IsEnabled,Converter={StaticResource buttonEnabletoContentConverter}}" />
            </StackPanel>
        </Grid>

    Best Regards,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.





    2017年4月24日 2:38
    版主