簡體   English   中英

WPF XAML綁定時不顯示任何文本框

[英]WPF XAML No textbox display when binding

我在一個簡單的文本框中無法顯示我想要的內容時遇到了困難。 基本上,我有一個來自此數據文件xml的分組列表框:

<Hosts>
  <Host foo="aaa">
    <usable>1</usable>
  </Host>
  <Host foo="bbb">
    <usable>1</usable>
  </Host>
</Hosts> 

我有以下代碼:

<CollectionViewSource x:Key="cvs"
                      Source="{Binding Source={StaticResource HostsData}}">
    <CollectionViewSource.GroupDescriptions>
        <PropertyGroupDescription PropertyName="@foo" />
    </CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<DataTemplate x:Key="categoryTemplate">
    <TextBlock Text="test"
               FontWeight="Bold"
               Background="Gold"
               Margin="0,5,0,0" />
</DataTemplate> 

...

<ListBox Name="myList"
         Grid.Row="0"
         Grid.Column="1"
         TextBlock.FontSize="9"
         Margin="2"
         ItemsSource="{Binding Source={StaticResource cvs}}"
         ItemTemplate="{StaticResource MachinesTemplate}">
    <ListBox.GroupStyle>
        <GroupStyle HeaderTemplate="{StaticResource categoryTemplate}" />
    </ListBox.GroupStyle>
</ListBox>

所以我有分組列表框,但是測試框內容為空。 它是“ gold”,如果我設置Text =“ test”,它會按照預期的方式加粗,但是我無法顯示“ foo ”內容(aaa,bbb)。

到目前為止,我已經嘗試過各種綁定方法,但均未成功。

要獲取匹配屬性的文本,您需要綁定到GroupStyle HeaderTemplate內部的Name屬性:

<TextBlock Text="{Binding Path=Name}" ... />

到此為止,假設您所有的XPath都正常工作,這是另外一系列問題。 這是一個完整的簡化示例,其中包含代碼中的相關部分:

<Grid>
    <Grid.Resources>
        <XmlDataProvider x:Key="HostsData"
                         XPath="//Host">
            <x:XData>
                <Hosts xmlns="">
                    <Host foo="aaa">
                        <usable>1</usable>
                    </Host>
                    <Host foo="bbb">
                        <usable>1</usable>
                    </Host>
                </Hosts>
            </x:XData>
        </XmlDataProvider>
        <CollectionViewSource x:Key="cvs"
                              Source="{Binding Source={StaticResource HostsData}}">
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="@foo" />
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
        <DataTemplate x:Key="categoryTemplate">
            <TextBlock Text="{Binding Path=Name}"
                       FontWeight="Bold"
                       Background="Gold"
                       Margin="0,5,0,0" />
        </DataTemplate>
    </Grid.Resources>
    <ListBox Name="myList"
             ItemsSource="{Binding Source={StaticResource cvs}}">
        <ListBox.GroupStyle>
            <GroupStyle HeaderTemplate="{StaticResource categoryTemplate}" />
        </ListBox.GroupStyle>
    </ListBox>
</Grid>

暫無
暫無

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

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