0

TabControlWinRTにSyncfusionを使用しています。正常に動作しますが、一部のデータにバインドしようとすると、正しく実行する方法がわかりません。私のコードは次のようなものです:

<navigation:SfTabControl 
    DisplayMemberPath="FullName">
    <navigation:SfTabItem Name="tabItemPosition" Content="{Binding Position}">
        <navigation:SfTabItem.ContentTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </navigation:SfTabItem.ContentTemplate>
    </navigation:SfTabItem> 
</navigation:SfTabControl>

ただし、ヘッダーのみが表示され、コンテンツは表示されません。どんなアドバイスも大歓迎です!

4

3 に答える 3

1

TabItemのヘッダーに「FullName」を表示し、TabItemのコンテンツに「Position」を表示したいと思います。ヘッダーとコンテンツの両方を装飾するには、それぞれHeaderTemplateとContentTemplateを使用する必要があります。

DataTemplatesを使用するので、「DisplayMemberPath」はもう必要ありません。以下のコードスニペットに従ってください。動作するはずです。

<navigation:SfTabControl TabStripPlacement="Left" Margin="0 60"
                             Grid.ColumnSpan="2" HorizontalAlignment="Stretch"
                             x:Name="ParticipantsList" >                        
        <!--For Header-->
        <navigation:SfTabControl.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding FullName}" Style="{StaticResource HeaderTextStyle}"  
                           VerticalAlignment="Top"/>
            </DataTemplate>
        </navigation:SfTabControl.HeaderTemplate>

        <!--For Content-->
        <navigation:SfTabControl.ContentTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Position}" Style="{StaticResource HeaderTextStyle}"  
                           VerticalAlignment="Top"/>
            </DataTemplate>
        </navigation:SfTabControl.ContentTemplate>
    </navigation:SfTabControl>
于 2013-03-05T04:00:29.180 に答える
0

これを試してください:から
削除Content="{Binding Position}"<navigation:SfTabItemて置き換えます

    <navigation:SfTabItem.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}"/>
        </DataTemplate>
    </navigation:SfTabItem.ContentTemplate>

<TextBlock Text="{Binding Position}"/>。また、「Position」変数は単一値の変数(配列ではない)であり、DataContextで使用可能であると想定しています。

于 2013-03-03T03:09:12.073 に答える
0

ページのコードは次のとおりです。

<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:voteme"
DataContext="{Binding Participants, RelativeSource={RelativeSource Self}}"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation="using:Syncfusion.UI.Xaml.Controls.Navigation"
xmlns:input="using:Syncfusion.UI.Xaml.Controls.Input"
x:Class="voteme.RateAll"
mc:Ignorable="d">
<Grid Style="{StaticResource LayoutRootStyle}">
    <Grid.RowDefinitions>
        <RowDefinition Height="140"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!-- Back button and page title -->
    <Grid Background="#FF939D46">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Button x:Name="backButton" Style="{StaticResource BackButtonLightStyle}" Margin="36"
                VerticalAlignment="Top" Click="backButton_Click"/>
        <StackPanel>
            <TextBlock x:Name="pageTitle" Foreground="White" Grid.Column="1" Text="{StaticResource AppName}" 
                    Style="{StaticResource PageHeaderTextStyle}" Margin="120 38" VerticalAlignment="Top"/>
        </StackPanel>
    </Grid>

    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="300"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid Grid.Column="1" Background="#FFEDEDEB" />
        <navigation:SfTabControl TabStripPlacement="Left" Margin="0 60"
                                 Grid.ColumnSpan="2" HorizontalAlignment="Stretch"
                                 x:Name="ParticipantsList"
                                 DisplayMemberPath="FullName">
            <navigation:SfTabItem>
                 <TextBlock Text="{Binding Position}" Style="{StaticResource HeaderTextStyle}"  VerticalAlignment="Top"/>
            </navigation:SfTabItem>
        </navigation:SfTabControl>
    </Grid>
</Grid>    

クラスコード(TabContentおよびTabItemに関連)は次のとおりです。

public List<ParticipantRatesView> Participants = new List<ParticipantRatesView>();
foreach (var participant in _persons)
            {
                Participants.Add(
                        new ParticipantRatesView()
                            {
                                FullName = participant.FullName,
                                Position = participant.Position,
                                Email = participant.Email,
                                PersonId = participant.Id,
                                AverageRate = participant.TotalRate,
                                OfficeRate = ((Rates) _ratesAll.CurrentItem).OfficeRate,
                                WindowsRate = ((Rates) _ratesAll.CurrentItem).WindowsRate,
                                EmoRate = ((Rates) _ratesAll.CurrentItem).EmotionalRate,
                                CustRate = ((Rates) _ratesAll.CurrentItem).CustomerRate,
                                RateId = ((Rates) _ratesAll.CurrentItem).Id
                            });
             }
    ParticipantsList.ItemsSource = Participants;

この方法はSyncfusionによって推奨されていますが、TabItemはまったく文書化されておらず、標準的な方法はうまく機能していません。

于 2013-03-03T19:03:16.027 に答える