0

各 FlipViewItem に ObservableCollection にバインドされた TextBox が含まれている FlipView があり、FlipView 内にある TextBox の TextWrapping を切り替える必要があります。

考えられることはすべて試しましたが、これまでオンラインで助けはありませんでした。私が見つけることができた単一の結果ではありません。

これどうやってするの?

XAML:

...

// This part is for the AppBar Toggle button
<ToggleButton x:Name="wordWrapToggleButton" Style="{StaticResource WordWrapAppBarButtonStyle}" />

...

// For the FlipView
<FlipView x:Name="flipView" Grid.Row="1" Margin="0, 50, 0, 0" ItemsSource="{Binding Note, Mode=TwoWay}" Loaded="flipView_Loaded" SelectionChanged="flipView_SelectionChanged" FontSize="12.667">
    <FlipView.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Contents, Mode=TwoWay}" Tag="{Binding Title, Mode=TwoWay}" TextWrapping="{Binding ElementName=wordWrapToggleButton, Path=.CheckState, Mode=TwoWay}" IsSpellCheckEnabled="True" AcceptsReturn="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="{x:Null}" FontSize="{Binding ElementName=flipView, Path=FontSize, Mode=OneWay}" />
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>
4

1 に答える 1

1

からに変換するバインディング コンバーターを作成する必要があります。boolTextWrapping

public class BooleanToTextWrappingConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool)value) ? TextWrapping.Wrap : TextWrapping.NoWrap;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value is TextWrapping && (TextWrapping)value == TextWrapping.Wrap;
    }
}

それをバインディングで使用します

<Page.Resources>
    <local:BooleanToTextWrappingConverter x:Key="BooleanToTextWrappingConverter"/>
</Page.Resources>
...
<DataTemplate>
    <TextBox Text="{Binding Contents, Mode=TwoWay}"
        TextWrapping="{Binding Path=IsChecked, ElementName=wordWrapToggleButton,
                       Converter={StaticResource BooleanToTextWrappingConverter}}"/>
</DataTemplate>

TextWrapping意味がないので、バインディングは双方向ではないことに注意してください。

于 2013-07-31T05:47:50.193 に答える