相关疑难解决方法(0)

你能在XAML中的数据绑定ItemsControl中添加一个额外的项吗?

我有一个ItemsControl绑定到decimals 列表的数据.我需要添加一个额外的控件ItemsControl(手动指定数字的选项).有没有办法在XAML中执行此操作?我知道我可以在后面的代码中手动添加项目,但我正在尝试更好地理解WPF并且想要查看是否有声明性方法来执行此操作.

请注意,修改我绑定的列表以便它包含额外的按钮(可能通过更改为strings而不是decimals 的列表)不是一个好的选择,因为我想将命令附加到最后一个按钮.

此外,在这之后添加一个额外的按钮ItemsControl也不是一个好选项,因为我的控件使用了一个UniformGrid,我希望我的额外控件在同一个网格中.

这是我的XAML:

<ItemsControl ItemsSource="{Binding PossibleAmounts}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Name="ButtonsGrid">
            </UniformGrid>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button>
                <TextBlock Text="{Binding StringFormat='\{0:C\}'}"/>
            </Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

基本上,我想在UniformGrid中再添一个按钮.

data-binding wpf xaml

15
推荐指数
2
解决办法
8267
查看次数

带有CompositeCollection的WPF ComboBox - SelectedIndex不粘

我正在使用带有CompositeCollection的ComboBox,如下所示:

<ComboBox>
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <ComboBoxItem Content="All"></ComboBoxItem>
            <CollectionContainer Collection="{Binding Source={StaticResource AllBitsSource}}" />
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

显示的数据完全符合预期,我现在只想将默认索引/值/项设置为包含内容All的ComboBoxItem,并且遇到一些问题.

如果我设置:

<ComboBoxItem Content="All" IsSelected="True"/>
Run Code Online (Sandbox Code Playgroud)

这完全被忽略了.

我也尝试过:

<ComboBox SelectedIndex="0">
Run Code Online (Sandbox Code Playgroud)

虽然这确实选择了All值,但是当我打开下拉列表时,突出显示的值是加载到ComboBox上的最后一个值,而不是All值.

我如何解决这个问题,以便在数据绑定后我的ComboBoxItem内容保持选中状态?

编辑:

我刚刚尝试用<CollectionContainer>另一个替换我的<ComboBoxItem>工作方式很好,即使他们仍然在里面<CompositeCollection>.

EDIT2:

图像显示问题所在:

图片

EDIT3:

AllBitsSource的代码:

XAML:

<Window.Resources>
    <CollectionViewSource x:Key="AllBitsSource" Source="{Binding Path=AllBits}" />
Run Code Online (Sandbox Code Playgroud)

代码背后:

private readonly ObservableCollection<string> _bits = new ObservableCollection<string>();

private void GetCurrentSettings()
{
    setttings = display.GetDisplaySettings();

    foreach (var mode in setttings)
    {
        var displaySettingInfoArray = mode.GetInfoArray();

        if (_bits.Contains(displaySettingInfoArray[4]) == false)
        {
            _bits.Add(displaySettingInfoArray[4]);
        }
    }
}

public ObservableCollection<string> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

4
推荐指数
1
解决办法
6938
查看次数

标签 统计

wpf ×2

xaml ×2

c# ×1

data-binding ×1