C# 是否将XAML中的按钮可见性绑定到viewmodel?
我希望按钮在C# 是否将XAML中的按钮可见性绑定到viewmodel?,c#,xamarin,mvvm,xamarin.forms,xamarin-studio,C#,Xamarin,Mvvm,Xamarin.forms,Xamarin Studio,我希望按钮在状态下可见。远离和状态。停止但由于某种原因,即使状态与状态.远离和状态.停止不同,按钮也始终可见 Xaml: <Button Text="Hello" IsVisible="{Binding View}"/> private bool myBool; public bool View { get { if (State == State.Away || State == State.Gone) {
状态下可见。远离和状态。停止
但由于某种原因,即使状态
与状态.远离和状态.停止
不同,按钮也始终可见
Xaml:
<Button Text="Hello" IsVisible="{Binding View}"/>
private bool myBool;
public bool View
{
get
{
if (State == State.Away || State == State.Gone)
{
myBool = true;
}
else
{
myBool = false;
}
return myBool;
}
}
您可以创建一个从状态
到可见性
public class StateToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (value is State)
{
State state = (State)value;
switch (state)
{
case State.Away:
case State.Gone:
return Visibility.Visible;
default:
return Visibility.Collapsed;
}
}
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
return State.None; // your default state
}
}
然后将按钮绑定到转换器上
<Window.Resources>
<local:StateToVisibilityConverter x:Key="StateToVisibilityConverter"/>
</Window.Resources>
<Button Text="Hello" Visibility="{Binding Path=State, Converter={StaticResource StateToVisibilityConverter}}"/>
如果始终返回false,当View Changes的值为按钮不可见时,VM需要实现INotifyPropertyChanged并引发PropertyChanged事件?然后,绑定可能不知道“状态”改变时“视图”发生了变化。此外,请确保控件的DATACONTRONT设置为VIEW模型正确。我将使用<代码> IValueConverter < /代码>将绑定<代码> ISTABLE 直接考虑到<代码>状态>代码>,它知道如何将状态映射到所需的可视性。这样,您就不必担心在多个属性上引发PropertyChanged
,并且您可以完全摆脱View
,从而简化代码。您可能需要基于现有代码包含一些名称空间。如果您的实际代码与示例代码不完全匹配,则可能是他弄错了一些类名。但从高层次来看,这一切都是正确和完整的。