Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
UWP模板控制与Caliburn。微绑定,如何?_Uwp_Caliburn.micro - Fatal编程技术网

UWP模板控制与Caliburn。微绑定,如何?

UWP模板控制与Caliburn。微绑定,如何?,uwp,caliburn.micro,Uwp,Caliburn.micro,我正在用Calibrun.Micro制作一个模板控件。 为了使问题更简单,我只使用2 x TextBlock cont重新生成TempleteControl 问题 一个文本块绑定为“TemplateBinding”。它很好用。 我想对第二个文本块使用Calibrun.Micro绑定。但是我不知道怎么写 <TextBlock x:Name="PART_Title" Text="{TemplateBinding Title_Text}" TextAlignment="Center" />

我正在用Calibrun.Micro制作一个模板控件。 为了使问题更简单,我只使用2 x TextBlock cont重新生成TempleteControl

问题

一个文本块绑定为“TemplateBinding”。它很好用。 我想对第二个文本块使用Calibrun.Micro绑定。但是我不知道怎么写

<TextBlock x:Name="PART_Title" Text="{TemplateBinding Title_Text}" TextAlignment="Center" />
<TextBlock x:Name="PART_Title2" Text="{Binding Title_Text2}" TextAlignment="Center" />
有没有办法在TemplateControl UWP中使用Caliburn.Micro绑定

请告诉我您的想法,我可以开始学习…

如果您希望自定义控件具有可绑定性和动画性,则应始终在自定义控件中使用依赖项属性

您的
Title\u Text 2
应该像
Title\u Text
一样定义。我以前没有使用Caliburn.Micro,但是
Set
方法可能是他们在ViewModel中通知属性更改的方法。在控件中,你不应该这样做


更新 实际上,您在代码中注释的内容几乎是正确的。您可以获取该
TextBlock
的引用,并在内部更新其
Text

private TextBlock _titleTextBlock;
protected override void OnApplyTemplate()
{
    base.OnApplyTemplate();

    _titleTextBlock = GetTemplateChild(TitlePart2Name) as TextBlock;
    if (_titleTextBlock != null)
    {
        _titleTextBlock.Text = "ByeBye by GetTemplateChild";
    }
}

谢谢你,贾斯汀很多次:)…Title_Text2,我不想把它当作从属财产。因为它是内在价值。但我想更新课堂上的值…………一如既往地欢迎您。:)请看我更新的答案。哇。我完全理解,在Templete控件中,我们应该使用DependencyProperty,或者使用GetTemplateChild查找属性!是的,您使用依赖属性公开公共属性API供其他人使用;您可以使用
GetTemplateChild
查找自定义控件的
ControlTemplate
中定义的控件/面板/形状,以便与它们进行内部交互。
private TextBlock _titleTextBlock;
protected override void OnApplyTemplate()
{
    base.OnApplyTemplate();

    _titleTextBlock = GetTemplateChild(TitlePart2Name) as TextBlock;
    if (_titleTextBlock != null)
    {
        _titleTextBlock.Text = "ByeBye by GetTemplateChild";
    }
}