【问题标题】:I'm not seeing one of my grid rows....(two WrapPanel ListBox's in a XAML Grid)我没有看到我的网格行之一......(XAML 网格中的两个 WrapPanel ListBox)
【发布时间】:2012-09-12 21:24:56
【问题描述】:

我在一个网格中有两个 ListBox。 ListBox ItemsPanelTemplate 设置为“WrapPanel”。我希望看到两个单独的行,但只看到 1。我对 xaml 很陌生。您的帮助将不胜感激。谢谢。

<navigation:Page
x:Class="BusMasterControl.Home" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 
xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" 
xmlns:ds="clr-namespace:BusMasterControl.Web"
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
xmlns:Controls="clr-namespace:BusMasterControl.Controls" 
xmlns:converters="clr-namespace:BusMasterControl.Controls.Converters"
mc:Ignorable="d" 
d:DesignWidth="640" 
d:DesignHeight="480" 
Style="{StaticResource PageStyle}">

<UserControl.Resources>
    <converters:UriToMachineNameConverter x:Key="uriToMachineNameConverter" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>

    <riaControls:DomainDataSource Name="busMasterControlDomainDataSource2" LoadSize="500" QueryName="GetResourceByDomainAndUriFilter" AutoLoad="True">
        <riaControls:DomainDataSource.DomainContext>
            <ds:BusMasterControlDomainContext />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="domain" Value="//bus.mydomain.com" />
            <riaControls:Parameter ParameterName="uriFilter" Value="red" />
        </riaControls:DomainDataSource.QueryParameters>

        <riaControls:DomainDataSource.SortDescriptors>
            <riaControls:SortDescriptor PropertyPath="resourceId" Direction="Ascending" />
        </riaControls:DomainDataSource.SortDescriptors>
    </riaControls:DomainDataSource>

    <riaControls:DomainDataSource Name="busMasterControlDomainDataSource" LoadSize="500" QueryName="GetResourceByDomainAndUriFilter" AutoLoad="True">
        <riaControls:DomainDataSource.DomainContext>
            <ds:BusMasterControlDomainContext />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="domain" Value="//bus.test.mydomain.com" />
            <riaControls:Parameter ParameterName="uriFilter" Value="red" />
        </riaControls:DomainDataSource.QueryParameters>
        <riaControls:DomainDataSource.SortDescriptors>
            <riaControls:SortDescriptor PropertyPath="resourceId" Direction="Ascending" />
        </riaControls:DomainDataSource.SortDescriptors>
    </riaControls:DomainDataSource>

    <ListBox Name="machines2" BorderThickness="0" ItemsSource="{Binding Data, ElementName=busMasterControlDomainDataSource2}"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" Grid.RowSpan="1">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Controls:BusBench 
                   Background="Gray"
                   BorderBrush="Black"
                   BorderThickness="1"
                   Caption="{Binding Path=uri, Converter={StaticResource uriToMachineNameConverter},FallbackValue=Collapsed}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <ListBox Name="machines" BorderThickness="0" ItemsSource="{Binding Data, ElementName=busMasterControlDomainDataSource}"  ScrollViewer.HorizontalScrollBarVisibility="Disabled"  Grid.RowSpan="1">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Controls:BusBench 
               Background="Gray"
               BorderBrush="Black"
               BorderThickness="1"
               Caption="{Binding Path=uri, Converter={StaticResource uriToMachineNameConverter},FallbackValue=Collapsed}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

【问题讨论】:

  • 另外,我的数据源一定有问题。我无法想象您必须创建整个“riaControls:DomainDataSource”标签才能执行具有不同参数的相同查询方法。这两个问题是否相关?
  • 如果是 Silverlight、WPF、Windows 8 或...,您应该添加到您的标签中,并删除实体框架标签。

标签: c# entity-framework xaml data-binding datasource


【解决方案1】:

我认为您没有指定第一个列表框属于网格行0,第二个属于网格行10Grid.Row 附加属性的默认值,因此您无需为第一个列表框指定它。但是对于第二个,您需要将其显式设置为1

<ListBox Name="machines" Grid.Row="1" ... >
  ...
</ListBox>

【讨论】:

  • 感谢斯劳马!就是这样。另外,我的问题的第二部分......我是否必须为每个具有不同参数的 GetResourceByDomainAndUriFilter 查询创建一个单独的 riaControls:DomainDataSource 块?还是有更紧凑的方式......就像在 ItemSource 绑定中一样?语法是什么?
  • @smadirondack:我不知道。我建议您为此打开一个单独的新问题,因为它与您的原始问题完全不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
相关资源
最近更新 更多