我有一个 MyViewModel 形式的数据上下文。
MyViewModel 有一个属性:public int MyWidth
。
对于列表视图中的每个项目,即 ListViewItem,我需要显示一个宽度等于 MyWidth 的画布。
我的 listView 的 ItemSource 绑定到一个名为 MyCollectionOf Ints的属性。
正如您可能已经猜到的那样,它具有以下定义:ObservableCollection<int>
.
精明的读者可能已经意识到,myListView 的数据上下文是 int,因此在尝试从 int 类型数据上下文绑定不存在的 MyWidth 属性时失败。
要让这种疯狂的事情发挥作用,需要什么样的理论上的疯狂绑定?
我最近的尝试是使用 RelativeSource 进行绑定,但无法完全弄清楚......
我的列表视图:
<ListView Name="MyListView" ItemsSource="{Binding MyCollectionOfInts}"
列表视图中的我的项目。
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumns Header=MyInts">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Name="m_TestLabel" Content="ASDF" />
<TextBox Text="{Binding Path=MyWidth, RelativeSource=????{RelativeSource AncestorType={x:Type MyViewModel}}}"/>
</DataTemplate>
</...a bunch of close brackets>
我的列表视图项是一个 int,但我想获取控件的原始数据上下文,即。myViewModel,并将我的 ListViewItem 的画布宽度绑定到 myViewModel 的 MyWidth 属性。如何让 ListViewItem 识别控件的数据上下文?
注意:我真的不想为 ListView 创建一个容器并在其中存储一个静态 MyWidth 变量,但如果这是唯一的方法,请告诉我。我希望不是。