gpt4 book ai didi

c# - 内部 ItemsControl 中对象的属性如何绑定(bind)到外部 ItemsControl 中对象的属性?

转载 作者:行者123 更新时间:2023-11-30 22:33:36 28 4
gpt4 key购买 nike

标题可能听起来令人费解,但请耐心等待。

我有包含住户的房间:

public class Room
{
public string Name { get; set; }
public List<Person> Occupants { get; set; }
public bool AreOccupantsEditable { get; set; }
}

public class Person
{
public string Name { get; set; }
}

这是一组房间:

<ResourceDictionary>
<x:Array x:Key="Rooms" Type="local:Room">
<local:Room Name="Happy Room" AreOccupantsEditable="True">
<local:Room.Occupants>
<local:Person Name="Mindy" />
</local:Room.Occupants>
</local:Room>
<local:Room Name="Sad Room" AreOccupantsEditable="True">
<local:Room.Occupants>
<local:Person Name="Bob" />
<local:Person Name="Jane" />
</local:Room.Occupants>
</local:Room>
<local:Room Name="Kill Room" AreOccupantsEditable="False">
<local:Room.Occupants>
<local:Person Name="Mork" />
<local:Person Name="Dave" />
<local:Person Name="Ryan" />
</local:Room.Occupants>
</local:Room>
</x:Array>
</ResourceDictionary>

这是 ItemsControl 中的 ItemsControl,用于显示房间及其居住者:

<ItemsControl ItemsSource="{Binding Source={StaticResource Rooms}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- room name -->
<TextBlock Text="{Binding Path=Name}" />
<ItemsControl ItemsSource="{Binding Path=Occupants}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- occupant name -->
<TextBox Text="{Binding Path=Name}" Margin="20,0,0,0" IsEnabled="{Binding ???}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

如果没有 Person 对 Room 的引用,我如何将 TextBox 的 IsEnabled 属性绑定(bind)到 Person 所在房间的 AreOccupantsEditable 属性?

如果有帮助,这里有一个示例项目:http://dl.dropbox.com/u/4220513/ItemsControl-Binding.zip

最佳答案

您可以使用 RelativeSource访问外部 DataContext :

IsEnabled="{Binding Path=DataContext.AreOccupantsEditable, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"

关于c# - 内部 ItemsControl 中对象的属性如何绑定(bind)到外部 ItemsControl 中对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com