簡體   English   中英

WPF Borderbrush在ItemsControl中綁定

[英]wpf borderbrush binding in itemscontrol

我在ItemsControl內有一個Border,需要從ItemsSource(一個Observable集合)中名為BorderColor的字段中獲取BorderBrush。

<ItemsControl ItemsSource="{Binding ObsColOfThings}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Border BorderThickness="3" BorderBrush="{Binding BorderColor}">
                            <ContentPresenter Content="{Binding}" />
                        </Border>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border >
                <TextBlock Text="{Binding Text}" />
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

綁定正在工作,但邊框筆刷沒有工作。

我也試過了,盡管文本工作正常,但也不管用

<ItemsControl ItemsSource="{Binding Appointments}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="{Binding BorderColor" BorderThickness="3">
                <TextBlock Text="{Binding AppointmentDescription}" />
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我要去哪里錯了?

同時指定ItemsControl的ItemTemplate和ContentPresenter的ContentTemplate是沒有意義的,因為ItemTemplate有效地替換了ContentTemplate。

放下整個ItemContainerStyle並按以下方式編寫ItemsControl:

<ItemsControl ItemsSource="{Binding ObsColOfThings}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border BorderThickness="3" BorderBrush="{Binding BorderColor}">
                <TextBlock Text="{Binding Text}" />
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

BorderColor屬性的類型應為Brush

public class Item
{
    public string Text { get; set; }
    public Brush BorderColor { get; set; }
}

然后當然應該將其稱為BorderBrush而不是BorderColor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM