Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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中使用2个文本块创建UserControl_Wpf_Xaml_Data Binding - Fatal编程技术网

在WPF中使用2个文本块创建UserControl

在WPF中使用2个文本块创建UserControl,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,我想创建一个UserControl,其中一个TextBlock作为标题,另一个TextBlock作为内容 HeaderTextBlock.xaml 但我如何使用它和绑定头和内容文本块的值呢 创建两个普通CLR属性,或 如果需要绑定,请创建与标题和文本对应的两个dependencProperty 您只需创建依赖项属性以在代码隐藏中公开这些元素。然后,当您在另一个视图中使用控件时,您可以这样做。 向两个TextBlock添加名称,然后添加依赖项属性以在代码隐藏中更改它们 <StackP

我想创建一个UserControl,其中一个TextBlock作为标题,另一个TextBlock作为内容

HeaderTextBlock.xaml


但我如何使用它和绑定头和内容文本块的值呢


  • 创建两个普通CLR属性,或

  • 如果需要
    绑定
    ,请创建与
    标题
    文本
    对应的两个
    dependencProperty


  • 您只需创建依赖项属性以在代码隐藏中公开这些元素。然后,当您在另一个视图中使用控件时,您可以这样做。 向两个TextBlock添加名称,然后添加依赖项属性以在代码隐藏中更改它们

    <StackPanel Orientation="Horizontal">
        <TextBlock Text="Header"
                   Opacity=".6"
                   Margin="5" 
                   Name="TextBlockHeader"/>
        <TextBlock Text="Text"
                   Margin="5" 
                   Name="TextBlockText"/>
    </StackPanel>
    
    然后你可以在另一个视图或控件中使用它,就像这样。。。也适用于绑定

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <local:HeaderTextBlock Header="{Binding Header}" Text="Hello WOrld"/>
    
    </Grid>
    

    您需要创建自定义控件,而不是使用userControl:

    这太过分了。这可以很容易地通过用户控件实现。在xaml.cs代码中添加依赖属性或任何其他代码段是一种不好的做法。我同意,这是一种不好的做法。但这就是编写自定义控件的方式。只要它们是通用的,并且像其他控件一样工作,那么后面的代码就是答案。我同意并且不会将代码隐藏用于视图或应用程序逻辑。
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <local:HeaderTextBlock Header="{Binding Header}" Text="Hello WOrld"/>
    
    </Grid>