Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
C# 如何根据状态更改视图?_C#_Silverlight_Windows Phone 7_Windows Phone 7.1 - Fatal编程技术网

C# 如何根据状态更改视图?

C# 如何根据状态更改视图?,c#,silverlight,windows-phone-7,windows-phone-7.1,C#,Silverlight,Windows Phone 7,Windows Phone 7.1,我现在正在使用Silverlight在WindowsPhone7.1中工作。在WPF中,我可以使用DataTriggers更改检查属性状态的视图,但在WP7中,我意识到没有DataTriggers 更具体地说,我正在创建一个时钟,其中有两个视图,模拟ad Digital,我想根据属性值更改contentControl中的视图 提前感谢。一个选项是将ContentControl绑定到模型中的属性。然后根据另一个属性的值更新内容 下面是一个非常粗糙的示例,使用了复选框、内容控件和两个用户控件: XA

我现在正在使用Silverlight在WindowsPhone7.1中工作。在WPF中,我可以使用DataTriggers更改检查属性状态的视图,但在WP7中,我意识到没有DataTriggers

更具体地说,我正在创建一个时钟,其中有两个视图,模拟ad Digital,我想根据属性值更改contentControl中的视图


提前感谢。

一个选项是将
ContentControl
绑定到模型中的属性。然后根据另一个属性的值更新
内容

下面是一个非常粗糙的示例,使用了
复选框
内容控件
和两个
用户控件

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 ) );
        }
    }
}