2012-11-19 36 views
0

我定义自己的控制 - NameInfoControl,这是基于UserControl彻底XAML:如何通过XAML设置`myListView`的值?

<UserControl x:Class="AcadLoadManager.NameInfoControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <Grid> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <ToolBar> 
       <Button x:Name="btnAdd" x:FieldModifier="public" ToolTip="Add record" > 
        <Image Source="/AcadLoadManager;component/Icons/bullet_sparkle.png" Width="16"/> 
       </Button> 
       <Button x:Name="btnEdit" x:FieldModifier="public" ToolTip="Edit record"> 
        <Image Source="/AcadLoadManager;component/Icons/bullet_edit.png" Width="16"/> 
       </Button> 
       <Button x:Name="btnRemove" x:FieldModifier="public" ToolTip="Remove record"> 
        <Image Source="/AcadLoadManager;component/Icons/bullet_cross.png" Width="16"/> 
       </Button> 
      </ToolBar> 
      <ListView x:Name="myListView" x:FieldModifier="public" Margin="3" Grid.Row="1"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn Width="100" Header="Global name" 
             DisplayMemberBinding="{Binding GlobalName}"/> 
         <GridViewColumn Width="100" Header="Local name" 
             DisplayMemberBinding="{Binding LocalName}"/> 
        </GridView> 
       </ListView.View> 
      </ListView> 
     </Grid> 
    </Grid> 
</UserControl> 

它看起来如此:

enter image description here

我的控制已经ListView项目,命名为 myListView。如何通过XAML为实例设置ItemsSource属性 myListView的值?我需要它在下面的代码:

<GroupBox Header="Command groups:" Grid.Column="0" Grid.Row="1" Margin="5"> 
    <local:NameInfoControl/> 
</GroupBox> 

回答

1

在你的NameInfoControl绑定的XAML你myListView的项目控件的DataContext

<ListView ItemsSource="{Binding}" x:Name="myListView" x:FieldModifier="public" Margin="3" Grid.Row="1"> 

然后在你使用父XAML该控件绑定到DataContext包含应显示的项目清单:

<local:NameInfoControl DataContext="{Binding MyCollectionOfItems}" />

+0

+1只需在最后一行中将Binging更改为BinDing即可。 – Blachshma

+0

但是,我必须从'ListBox.SelectedItem.Items'获取项目源,它们位于'MainWindow'上。我的'NameInfoControl'实例也位于这个窗口上,bot作为嵌套在其他控件中。我试过这样的代码:'DataContext =“{Binding ElementName = lstAcads,Path = SelectedItem}”ItemsSource =“{Binding Path = HKLMApplications}”'但它不适用于我。 –

+0

将一个新属性添加到包含SelectedItems的主窗口中并与之绑定。看起来你已经到了一个复杂的地步,你应该开始考虑使用MVVM模式。 – bitbonk