C# WPF通过另一个控件的按钮更改ContentControl模板

C# WPF通过另一个控件的按钮更改ContentControl模板,c#,wpf,xaml,controltemplate,C#,Wpf,Xaml,Controltemplate,我有以下控件/视图: myControl在UserControl.Resources中包含一个ContentControl和两个ControlTemplates 主应用程序(窗口)带有myControl实例和切换按钮 我想通过主应用程序中的ToggleButton在两个ControlTemplates之间切换 这应该很容易。。。但是我找不到合适的方法:一个更简单的解决方案是绑定到content控件的content属性并为每种类型的内容定义datatemplates <Window.R

我有以下控件/视图:

  • myControl
    UserControl.Resources中包含一个ContentControl和两个ControlTemplates
  • 主应用程序(窗口)带有myControl实例和切换按钮

我想通过主应用程序中的ToggleButton在两个ControlTemplates之间切换


这应该很容易。。。但是我找不到合适的方法:一个更简单的解决方案是绑定到content控件的content属性并为每种类型的内容定义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>

通过togglebuttonsth的未检查/已检查事件的代码更改资源,如:void ToggleButtonChed(){myControl.Resources[“ControlTemplate1”]=myControl.TryFindResource(“ControlTemplate2”);}ohhh。。。知道了。。。愚蠢的我。var cc=ManagePicker.FindChild(“myControl”,0);var ctpl=ManagePicker.TryFindResource(“ControlTemplate1”)作为ControlTemplate;cc.Template=ctpl;活动怎么样?像触摸或鼠标事件。。。它们对于每个模板都是不同的。有没有解决这个问题的好办法?
<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");
    }

}