本文介绍了我怎样才能绑定此控件模板里面呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个的ListView
,充满了列表< MyListItem>
,我需要使用控件模板
,能够当选择一个项目,更改的影响。现在我有一个问题{myProperty的绑定}
不里面的控件模板
工作。如何访问 MyListItem
属性的模板中?
I have a ListView
, filled with a List<MyListItem>
and I need to use a ControlTemplate
to be able to change the effects when an item is selected. Now I have the problem that {Binding MyProperty}
doesn't work inside of that ControlTemplate
. How can I access the properties of MyListItem
inside the template?
我的XAML看起来像这样(简体):
My XAML looks like this(simplified):
<ListView
Name="ListView"
Grid.Column="1"
IsSwipeEnabled="False">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.TargetName="myColoredText" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Orange"/>
</Storyboard>
</VisualState>
<VisualState x:Name="SelectedUnfocused">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.TargetName="myColoredText" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Red"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!-- Here I have my custom layout, removed for readability -->
<TextBlock
Name="myColoredText"
Foreground="Green"
Text="{Binding MyProperty}"/><!-- This does not work -->
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
下面是此XAML背后的类:
Here is the class behind this XAML:
public sealed partial class MyPage : Page
{
public MyPage()
{
InitializeComponent();
ListView.ItemsSource = new List<MyListItem>()
{
new MyListItem("Title1", "SubTitle1"),
new MyListItem("Title2", "SubTitle2")
}
}
}
和MyListItem类:
and the MyListItem class:
class MyListItem
{
public string MyProperty { get; set; }
public string MyOtherProperty { get; set; }
public MyListItem(string myProperty, string myOtherProperty)
{
MyProperty = myProperty;
MyOtherProperty = myOtherProperty;
}
}
这个问题最小的项目:
Smallest project with the problem:
推荐答案
在文本框
,使用:
Text="{Binding Content.MyProperty,
RelativeSource={RelativeSource TemplatedParent}}"
这篇关于我怎样才能绑定此控件模板里面呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!