开发者

WPF Multiple ItemSources?

开发者 https://www.devze.com 2023-03-11 23:42 出处:网络
Is it possible to have multiple ItemSources for a single control? Given the code below: <ComboBox Margin=\"137,101,169,183\" ItemsSource=\"{Binding collection}\"SnapsToDevicePixels=\"True\"

Is it possible to have multiple ItemSources for a single control?

Given the code below:

<ComboBox Margin="137,101,169,183" ItemsSource="{Binding collection}"   SnapsToDevicePixels="True"            
 <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                <CheckBox Command="{Binding CheckCommand}" IsChecked="{Binding IsChecked}" Content="{Binding Name}"/>
                    <TextBlock Text="" />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

The TextBlock within the ComboBox DataTemplate requires data from another property within the VM than that of the ComboBox. How can this be 开发者_开发问答achieved?

Thanks.


You can use RelativeSource-FindAncestor to reach up the visual tree and grab a different DataContext.

For example (assuming the command is what you want):

Command=”{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=CheckCommand}”

This should also serve as a good resource.

Edit: Typo and resources.


If i remember correctly, DataTemplates run within their own scope and cannot directly use ElementNames defined outside the DataTemplate. You could however get around it by using StaticResource and referring to that directly from TextBlock inside the template.

I haven't tried Ragepotatos's approach to go outside DataTemplate scope but would love to know if that works out for you too.

0

精彩评论

暂无评论...
验证码 换一张
取 消