1

現在、Silverlightを使用してWindowsPhone7.1で作業しています。WPFでは、DataTriggersを使用してプロパティの状態を確認するビューを変更できますが、WP7ではDataTriggersがないことに気付きました。

より具体的には、2つのビュー、Analogic ad Digitalを持つ時計を作成しており、プロパティ値に応じてcontentControlのビューを変更したいと思います。

前もって感謝します。

4

1 に答える 1

2

ContentControl1つのオプションは、モデルのプロパティにをバインドすることです。Content次に、別のプロパティの値に基づいてを更新します。

CheckBoxこれは、ContentControlとを使用した非常に大雑把な例UserControlsです。

XAML

<StackPanel>
    <CheckBox Content="Swap Content" 
              IsChecked="{Binding Path=Swapper, Mode=TwoWay}" />
    <ContentControl Content="{Binding Path=ClockView}" />
</StackPanel>

コードビハインド

public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
        this.DataContext = new MainModel();
    }
}

public class MainModel : INotifyPropertyChanged
{
    private bool _swapper;
    public bool Swapper
    {
        get { return _swapper; }
        set
        {
            _swapper = value;
            NotifyChanged( "Swapper" );
            SwapContent();
        }
    }

    private UserControl _clockView;
    public UserControl ClockView
    {
        get { return _clockView; }
        private set
        {
            _clockView = value;
            NotifyChanged( "ClockView" );
        }
    }

    public void SwapContent()
    {
        // AnalogClock and DigitalClock are UserControls
        if( ClockView == null || ClockView.GetType() == typeof( AnalogClock ) )
        {
            ClockView = new DigitalClock();
        }
        else
        {
            ClockView = new AnalogClock();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyChanged( string propName )
    {
        if( PropertyChanged != null )
        {
            PropertyChanged( this, new PropertyChangedEventArgs( propName ) );
        }
    }
}
于 2012-05-01T02:02:48.767 に答える