Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf 通过更改控件模板修改控件和添加子控件之间有什么区别_Wpf_Xaml_Controls_Wpf Controls - Fatal编程技术网

Wpf 通过更改控件模板修改控件和添加子控件之间有什么区别

Wpf 通过更改控件模板修改控件和添加子控件之间有什么区别,wpf,xaml,controls,wpf-controls,Wpf,Xaml,Controls,Wpf Controls,我是WPF新手,对修改控件有疑问。我知道可以通过更改控件模板来修改控件。i、 e 我们还可以利用内容模型编辑控件。i、 e 这两种技术的区别是什么。哪一种是在WPF中自定义控件的正确方法。请帮助我更好地理解这一点。模板可以放置到资源中,并重新用于另一个按钮 直接更改内容是不可重用的,除非您使用它来创建UserControl 您使用哪一个取决于具体的任务和您的个人喜好。模板可以放置到资源中,并用于另一个按钮 直接更改内容是不可重用的,除非您使用它来创建UserControl 您使用哪一个取决于具体

我是WPF新手,对修改控件有疑问。我知道可以通过更改控件模板来修改控件。i、 e

我们还可以利用内容模型编辑控件。i、 e


这两种技术的区别是什么。哪一种是在WPF中自定义控件的正确方法。请帮助我更好地理解这一点。

模板可以放置到资源中,并重新用于另一个按钮

直接更改内容是不可重用的,除非您使用它来创建UserControl


您使用哪一个取决于具体的任务和您的个人喜好。

模板可以放置到资源中,并用于另一个按钮

直接更改内容是不可重用的,除非您使用它来创建UserControl


您使用哪一个取决于具体的任务和您的个人喜好。

这两件事之间的主要区别在于定义控件的外观。它实际上并不是将内容放在其中。在内容控件内的某些位置,应该有某种形式的。内置控件能够做到这一点,因为它们就是所谓的控件,并且创建的任何自定义控件也应该是无外观的。如果控件不是以无外观的方式模板化的,而是具有静态布局,则可能会出现您遇到的混乱

至于正确的做事方式,这取决于你想要达到的目标。如果您正试图更改控件,例如外观或行为,那么,根据您正在模板化的内容,使用数据模板或DataTemplate绝对是一种方法。一个很好的例子是复选框,信不信由你,复选框实际上是一个切换按钮,它在一个项目符号中显示切换性。另一个很好的例子是如何使用模板做一些非常漂亮的事情

控件模板也应该是,而不是直接在元素上设置

如果您实际上并不打算修改控件的行为或外观,那么使用内容模型是正确的方法


,虽然我不知道SL3是否有改进。

这两件事之间的主要区别在于定义了控件的外观。它实际上并不是将内容放在其中。在内容控件内的某些位置,应该有某种形式的。内置控件能够做到这一点,因为它们就是所谓的控件,并且创建的任何自定义控件也应该是无外观的。如果控件不是以无外观的方式模板化的,而是具有静态布局,则可能会出现您遇到的混乱

至于正确的做事方式,这取决于你想要达到的目标。如果您正试图更改控件,例如外观或行为,那么,根据您正在模板化的内容,使用数据模板或DataTemplate绝对是一种方法。一个很好的例子是复选框,信不信由你,复选框实际上是一个切换按钮,它在一个项目符号中显示切换性。另一个很好的例子是如何使用模板做一些非常漂亮的事情

控件模板也应该是,而不是直接在元素上设置

如果您实际上并不打算修改控件的行为或外观,那么使用内容模型是正确的方法


,虽然我不知道SL3是否有改进。

我的经验法则是,如果可以在不更改控件模板的情况下获得我想要的内容,则不应更改控件模板

控件模板是更改控件外观的一种方法,例如制作圆形按钮以更改复选框的复选标记图形

在控件中添加控件更简单,例如,将图像放置在按钮中


还要记住,控件模板中有很多功能,包括填充、内容对齐、禁用外观等,如果更改控件模板,则必须添加对所有这些功能的支持。

我的经验法则是,如果可以在不更改控件模板的情况下获得我想要的内容,则不应更改控件模板

控件模板是更改控件外观的一种方法,例如制作圆形按钮以更改复选框的复选标记图形

在控件中添加控件更简单,例如,将图像放置在按钮中


还要记住,控件模板中有很多功能,包括填充、内容对齐、禁用外观等,如果更改控件模板,则必须添加对所有这些功能的支持。

控件的内容肯定是可重用的,通过将元素定义为资源并使用ContentControls,或者将内容分配为DataT
emplate。我认为如果您使用ContentControl或DataTemplate,与原始问题中的情况2不同。控件的内容肯定是可重用的,可以通过将元素定义为资源并使用ContentControl,或者将内容分配为DataTemplate。我认为如果您使用ContentControl或DataTemplate,这与原问题中的情况2不同。
<Button>
  <Button.Template>
    <ControlTemplate>
      ...
    </ControlTemplate>
  </Button.Template>
</Button>
<Button>
  <Grid>
    <CheckBox>
    </CheckBox>
    <RadioButton>
    </RadioButton>
    ...
  </Grid>
</Button>