具有 Caliburn.Micro 绑定的 UWP 模板控件,怎么样?
UWP Template Control with Caliburn.Micro Binding , How?
我正在用 Calibrun.Micro 制作 TempleteControl。
为了使问题更简单,我只使用 2 x TextBlock cont.
重新制作了我的 TempleteControl
问题
一个 TextBlock 绑定为 "TemplateBinding"。它工作正常。
我想对第二个 TextBlock 使用 Calibrun.Micro 绑定。但是不知道怎么写..
<TextBlock x:Name="PART_Title" Text="{TemplateBinding Title_Text}" TextAlignment="Center" />
<TextBlock x:Name="PART_Title2" Text="{Binding Title_Text2}" TextAlignment="Center" />
现在,我的代码在“.Set”方法处出错。
public string Title_Text2 {
get { return _title_Text2; }
set { this.Set(_title_Text2); }
}
有什么方法可以在 TemplateControl UWP 中使用 Caliburn.Micro 绑定吗?
Here is full project code in GitHub.
请给我你的想法,我可以开始学习...
你应该总是在自定义控件中使用依赖项属性,如果你希望它是可绑定的和可动画的。
您的 Title_Text2
应该像 Title_Text
一样定义。我之前没有使用过 Caliburn.Micro 但 Set
方法可能是他们通知 属性 ViewModel[ 中的变化的方法=28=]。在控件内部,您不应该这样做。
更新
实际上你在代码中注释掉的几乎是正确的。您可以获得该 TextBlock
的引用并在内部更新其 Text
。
private TextBlock _titleTextBlock;
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
_titleTextBlock = GetTemplateChild(TitlePart2Name) as TextBlock;
if (_titleTextBlock != null)
{
_titleTextBlock.Text = "ByeBye by GetTemplateChild";
}
}
我正在用 Calibrun.Micro 制作 TempleteControl。 为了使问题更简单,我只使用 2 x TextBlock cont.
重新制作了我的 TempleteControl问题
一个 TextBlock 绑定为 "TemplateBinding"。它工作正常。 我想对第二个 TextBlock 使用 Calibrun.Micro 绑定。但是不知道怎么写..
<TextBlock x:Name="PART_Title" Text="{TemplateBinding Title_Text}" TextAlignment="Center" />
<TextBlock x:Name="PART_Title2" Text="{Binding Title_Text2}" TextAlignment="Center" />
现在,我的代码在“.Set”方法处出错。
public string Title_Text2 {
get { return _title_Text2; }
set { this.Set(_title_Text2); }
}
有什么方法可以在 TemplateControl UWP 中使用 Caliburn.Micro 绑定吗?
Here is full project code in GitHub.
请给我你的想法,我可以开始学习...
你应该总是在自定义控件中使用依赖项属性,如果你希望它是可绑定的和可动画的。
您的 Title_Text2
应该像 Title_Text
一样定义。我之前没有使用过 Caliburn.Micro 但 Set
方法可能是他们通知 属性 ViewModel[ 中的变化的方法=28=]。在控件内部,您不应该这样做。
更新
实际上你在代码中注释掉的几乎是正确的。您可以获得该 TextBlock
的引用并在内部更新其 Text
。
private TextBlock _titleTextBlock;
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
_titleTextBlock = GetTemplateChild(TitlePart2Name) as TextBlock;
if (_titleTextBlock != null)
{
_titleTextBlock.Text = "ByeBye by GetTemplateChild";
}
}