gpt4 book ai didi

c# - 如何为 [] 属性定义 XAML 示例数据

转载 作者:行者123 更新时间:2023-11-30 22:09:02 25 4
gpt4 key购买 nike

我正在尝试使用 XAML 示例数据,其中我的“项目”类通过为 [] 定义属性访问器来使用动态属性的形式。它 (PremiseObject) 这样做是这样的:

...
/// <summary>
/// Property accessor. Simulates a dynamic object.
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public object this[string name] {
get {
PremiseProperty prop;
if (_properties.TryGetValue(name, out prop))
return prop.Value;

// In XAML <Button Content="Trigger" Command="{Binding [TriggerCommand]}">
// where 'Trigger' is the name of hte property that is momentary
if (name.EndsWith("Command")) {
string cmd = name.Substring(0, name.Length - "Command".Length);
if (_properties.TryGetValue(cmd, out prop)) {
return new PremiseCommand(this, cmd);
}
}

return null;
}
set {
SetMember(name, value);
}
}
...

别介意中间的粘液。关键是在我的 XAML 中我可以做这样很酷的事情:

<ListBox x:Name="DoorsListBox" Margin="0,0,-12,0" 
ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,35">
<StackPanel>
<!-- We use Description instead of DisplayName because DisplayName changes for GDOs. -->
<TextBlock TextAlignment="Left" TextWrapping="NoWrap" Width="320"
Text="{Binding [Description]}" Style="{StaticResource PhoneTextTitle2Style}"
/>
<TextBlock TextAlignment="Left" TextWrapping="NoWrap" Width="320"
Text="{Binding [GarageDoorStatus], Converter={StaticResource GDOStateFormatConverter}}"
Style="{StaticResource PhoneTextSubtleStyle}"

Foreground="{Binding [GarageDoorStatus], Converter={StaticResource GDOStateColorConverter}}"/>
</StackPanel>
<Button DataContext="{Binding}"
Content="Trigger"
IsEnabled="True"
Style="{StaticResource GDOButtonStyle}"
Command="{Binding [TriggerCommand]}">
</Button>

</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

我对它的工作方式非常满意。我已经尝试了多种形式的动态对象,在我遇到这个问题之前,它一直运行得非常好。

这个问题是我不知道如何为此指定示例 XAML 数据。

<vm:GarageDoorsViewModel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:PremiseWP.ViewModels"
xmlns:prem="clr-namespace:PremiseWebClient"
IsDataLoaded="False">

<vm:GarageDoorsViewModel.Items>
<prem:PremiseObject *** SOMETHING GOES HERE ***/>
</vm:GarageDoorsViewModel.Items>

</vm:GarageDoorsViewModel>

我需要一些语法来指定示例数据“这是一个具有此名称和此值的动态属性”。

我该怎么做?有可能吗?

最佳答案

我不确定,但我想您需要为您的类(class)设置 ContentPropertyAttribute。而不是将您的值(value)观放在标签的内容中。

<vm:GarageDoorsViewModel.Items>
<prem:PremiseObject>
<object x:Key="key"/>
</prem:PremiseObject>
</vm:GarageDoorsViewModel.Items>

关于c# - 如何为 [] 属性定义 XAML 示例数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21842310/

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