WPF:如果用户单击子列表框,如何选择父列表框

发布于 2024-08-22 05:17:28 字数 1828 浏览 8 评论 0原文

在我使用 DataTemplate 机制的应用程序中,我将另一个列表框插入到 ListBox 项中。但是,当在父列表框中选择一个列表框项时,焦点是否可能位于另一个父列表框项的子项上(见图)

图片

怎么办:如果子列表框之一处于焦点(选择了其中一项),则父列表框项目被选择?使用绑定或模板

<DataTemplate x:Key="NotesListBoxDataTemplate" DataType="Note">
    <StackPanel Orientation="Vertical">

        <StackPanel Orientation="Horizontal">
            <TextBox Text="{Binding Path=Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
            <my:DatePicker Height="25" Name="datePicker1" Width="115" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
                           SelectedDate="{Binding LastEdit,
                                                  Mode = TwoWay}" />
        </StackPanel>
        <TextBox Text="{Binding Path=Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>

        <StackPanel Orientation="Horizontal">
            <ListBox Name="ImagesListBox"  SelectedIndex="{Binding Mode=OneWayToSource, Source={StaticResource progParameters}, Path=SelectedImage, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding Path=Images}" ItemTemplate="{StaticResource NotesListBoxImagesTemplate}" Style="{StaticResource HorizontalListBox}">
            </ListBox>
            <StackPanel Orientation="Vertical">
                <Button Name="AddImageButon" Content="+" Click="AddImageButon_Click"></Button>
                <Button Name="RemoveImageButon" Content="-" Click="RemoveImageButon_Click"></Button>
            </StackPanel>

        </StackPanel>

    </StackPanel>
</DataTemplate>

In my application using DataTemplate mechanism I insert into ListBox item another listbox. But is it possible that when selected one listboxitem in parent listbox, the focus may be on another parent listboxitem's child (see picture)

Pic

How to do: if one of child listbox in focus (one item from them selected), then parent listboxitem being selected to? Using binding or templating

<DataTemplate x:Key="NotesListBoxDataTemplate" DataType="Note">
    <StackPanel Orientation="Vertical">

        <StackPanel Orientation="Horizontal">
            <TextBox Text="{Binding Path=Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
            <my:DatePicker Height="25" Name="datePicker1" Width="115" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
                           SelectedDate="{Binding LastEdit,
                                                  Mode = TwoWay}" />
        </StackPanel>
        <TextBox Text="{Binding Path=Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>

        <StackPanel Orientation="Horizontal">
            <ListBox Name="ImagesListBox"  SelectedIndex="{Binding Mode=OneWayToSource, Source={StaticResource progParameters}, Path=SelectedImage, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding Path=Images}" ItemTemplate="{StaticResource NotesListBoxImagesTemplate}" Style="{StaticResource HorizontalListBox}">
            </ListBox>
            <StackPanel Orientation="Vertical">
                <Button Name="AddImageButon" Content="+" Click="AddImageButon_Click"></Button>
                <Button Name="RemoveImageButon" Content="-" Click="RemoveImageButon_Click"></Button>
            </StackPanel>

        </StackPanel>

    </StackPanel>
</DataTemplate>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝天白云 2024-08-29 05:17:28

在父 ListBox 上将属性 IsSynchronizedWithCurrentItem 设置为 true,然后在内部 ListBox 中设置 SelectedItem 属性为 “{Binding SelectedItem ElementName=lbParent}”

考虑使用转换器来帮助您获取无法访问的特定数据通过 xaml 或者如果您需要进行一些计算。

希望这有帮助。

On the parent ListBox set property IsSynchronizedWithCurrentItem to true, then in the inner ListBoxes set the SelectedItem property to "{Binding SelectedItem ElementName=lbParent}".

Consider using a Converter to help you get specific data that is not accessible thru xaml or if you need to do some caculations.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文