一个简单的办法是绑定到内容控件的内容属性和定义的DataTemplates为每种类型的内容。
<Window.Resources>
<DataTemplate DataType="{x:Type local:MyType1}">
<Border Background="Red" />
</DataTemplate>
<DataTemplate DataType="{x:Type local:MyType2}">
<Border Background="Green" />
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="24" />
</Grid.RowDefinitions>
<ContentControl Content="{Binding MyContent}" />
<ToggleButton Grid.Row="1"
Content="Toggle"
IsChecked="{Binding IsChecked}" />
</Grid>
//DataContext
public bool IsChecked
{
get { return isChecked_; }
set
{
isChecked_ = value;
NotifyPropertyChanged_("IsChecked");
if (value)
MyContent = new MyType1();
else
MyContent = new MyType2();
}
}
public object MyContent
{
get { return myContent_; }
set
{
myContent = value;
NotifyPropertyChange_("MyContent");
}
}
来源
2012-09-20 11:55:15
Per
经由切换按钮的未检查/经过事件的代码改变资源 – seveves
某物像:无效ToggleButtonChecked(){myControl.Resources [ “ControlTemplate1”] = myControl.TryFindResource( “ControlTemplate2”); } – seveves
ohhh ...明白了......愚蠢的我。 var cc = ManagePicker.FindChild(“myControl”,0); var ctpl = ManagePicker.TryFindResource(“ControlTemplate1”)作为ControlTemplate; cc.Template = ctpl; –
seveves