버튼이 State.Away 및 State.Stop에 표시되도록하고 싶지만 상태가 State.Away 및 State.Stop과 다른 경우에도 버튼이 항상 표시됩니다.XAML의 버튼 가시성을 뷰 모델에 바인딩합니까?
XAML :
<Button Text="Hello" IsVisible="{Binding View}"/>
의 ViewModel : 당신은 그럼 당신은 변환기에 버튼을 결합 Visibility
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
}
}
에 State
에서 IValueConverter
를 만들 수 있습니다
private bool myBool;
public bool View
{
get
{
if (State == State.Away || State == State.Gone)
{
myBool = true;
}
else
{
myBool = false;
}
return myBool;
}
}
VM에서 INotifyPropertyChanged를 구현하고 View 값이 변경되면 PropertyChanged 이벤트를 발생시켜야합니다. – Jason
항상 false를 반환하면 버튼이 보이지 않습니까? 그런 다음 바인딩은 "상태"가 변경되었을 때 "보기"가 변경되었음을 알지 못합니다. –
또한 컨트롤의 DataContext가 ViewModel에 올바르게 설정되어 있는지 확인하십시오. – Viju