Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
C# 绑定文本块来自资源wpf的文本_C#_Wpf_Xaml - Fatal编程技术网

C# 绑定文本块来自资源wpf的文本

C# 绑定文本块来自资源wpf的文本,c#,wpf,xaml,C#,Wpf,Xaml,我尝试了上面的代码,但无法绑定文本,如何将内部资源文本块文本绑定到外部资源,谢谢这里出现的各种问题: 您正在TextBlock文本绑定中指定Mode.TwoWay,它应该是Mode.OneWay 您正在绑定到标签的文本属性。标签没有文本属性,只有内容。而且它不是依赖属性,所以不能绑定到它。(这就是说,内部力学的偶然性确实会导致它在某些条件下工作) 模板就是:模板。你不能绑定到不存在的东西,所以绑定是没有意义的 也许你可以明确你想要做的是什么,这样我们就可以建议一种实现它的替代方法了?具体地说,向

我尝试了上面的代码,但无法绑定文本,如何将内部资源文本块文本绑定到外部资源,谢谢这里出现的各种问题:

  • 您正在TextBlock文本绑定中指定Mode.TwoWay,它应该是Mode.OneWay
  • 您正在绑定到标签的
    文本
    属性。标签没有文本属性,只有内容。而且它不是依赖属性,所以不能绑定到它。(这就是说,内部力学的偶然性确实会导致它在某些条件下工作)
  • 模板就是:模板。你不能绑定到不存在的东西,所以绑定是没有意义的
  • 也许你可以明确你想要做的是什么,这样我们就可以建议一种实现它的替代方法了?具体地说,向我们展示您是如何实例化该数据模板的

    更新:

    您需要创建第一个文本框,以便第二个文本框绑定到它,仅在DataTemplate中声明它本身不会导致这种情况发生,因此直接绑定将失败。但是,通常应该避免像这样将UI元素绑定在一起,为什么不能简单地为第二个文本框提供与第一个相同的绑定呢

    <Grid.Resources>
                <DataTemplate x:Key="trackTemplateY">
                        <TextBlock x:Name="txbValueY" Text="{Binding ValueX}" Margin="5" FontSize="11" FontWeight="Medium"/>
                </DataTemplate>
            </Grid.Resources>
    <TextBlock Text="{Binding ElementName=txbValueY,Mode=OneWay,Path=Text}" 
                       Background="Orange" Foreground="White"/>
    
    
    
    如果由于某种原因无法执行此操作,则还可以创建绑定代理对象(有关详细信息,请参阅):

    
    

    同样,如果您确实想绑定到数据模板声明,也有一些方法,但要绑定到数据模板声明,我必须查看运行时如何创建数据模板的详细信息。

    我猜您正在尝试在第二个非资源TextBlock中显示TextBlock资源中存在的文本

    <Grid>
        <Grid.Resources>
    
            <local:BindingProxy x:Key="proxy" Data="{Binding ValueX}" />
    
            <DataTemplate x:Key="trackTemplateY">
                <TextBlock x:Name="txbValueY" Text="{Binding ValueX}" Margin="5" FontSize="11" FontWeight="Medium"/>
            </DataTemplate>
    
        </Grid.Resources>
    
        <TextBlock Text="{Binding Source={StaticResource ResourceKey=proxy}, Path=Data}" Background="Orange" Foreground="White"/>
    </Grid>
    
  • 您不需要数据模板。随着你们在WPF旅程中的前进,你们将逐渐了解这些
  • 下面的代码将在第二个文本块中显示“资源文本”

    <Grid>
        <Grid.Resources>
    
            <local:BindingProxy x:Key="proxy" Data="{Binding ValueX}" />
    
            <DataTemplate x:Key="trackTemplateY">
                <TextBlock x:Name="txbValueY" Text="{Binding ValueX}" Margin="5" FontSize="11" FontWeight="Medium"/>
            </DataTemplate>
    
        </Grid.Resources>
    
        <TextBlock Text="{Binding Source={StaticResource ResourceKey=proxy}, Path=Data}" Background="Orange" Foreground="White"/>
    </Grid>
    
    
    
    现在我编辑我的问题,请看,那么没有办法将资源值内部绑定到外部???为什么在这里使用数据模板?
        <Grid.Resources>
          <TextBlock x:Key="TbRes1" Text="Resource Text" x:Name="txbValueY" Margin="5" FontSize="11" FontWeight="Medium"/>
        </Grid.Resources>
        <TextBlock Text="{Binding Source={StaticResource TbRes1},Mode=OneWay,Path=Text}" 
                       Background="Orange" Foreground="White"/>