C# 如何根据状态更改视图?
我现在正在使用Silverlight在WindowsPhone7.1中工作。在WPF中,我可以使用DataTriggers更改检查属性状态的视图,但在WP7中,我意识到没有DataTriggers 更具体地说,我正在创建一个时钟,其中有两个视图,模拟ad Digital,我想根据属性值更改contentControl中的视图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
提前感谢。一个选项是将
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 ) );
}
}
}