UWP RichEditBox изначально показывает только одну строку в ListView - PullRequest
0 голосов
/ 29 февраля 2020

Я пробовал решение, предложенное здесь https://social.msdn.microsoft.com/Forums/windowsapps/en-US/62d36441-7b14-4788-b146-2a85b9fc7a00/binding-richeditbox-in-xaml-from-codebehind:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView x:Name="MyListView">
        <ListView.ItemTemplate>
            <DataTemplate>
                <RichEditBox local:BindableREBText.Text="{Binding}" ></RichEditBox>                    
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

Похоже, оно работает, но Базовый элемент управления имеет одну ошибку, которая делает его бесполезным - элемент управления отображает только одну строку текста, пока вы не наведете указатель на него, когда он получит нужный размер. Я пытался применить меру после назначения текста, но до сих пор не мог заставить его работать. У кого-нибудь есть идеи, как обойти эту ошибку?

1 Ответ

1 голос
/ 03 марта 2020

UWP RichEditBox изначально показывает только одну строку в ListView

Проблема в том, что вы не указали c ширину для RichEditBox, а ширина RichEditBox не была адаптивной с ListViewitem. В настоящее время у нас есть обходной путь, который мы должны использовать для привязки, чтобы динамически изменять ширину RichEditBox.

public HomePage()
{
    this.InitializeComponent();
    this.Loaded += HomePage_Loaded;
    this.DataContext = this;
}
private double _rdbWidth;
public double RDBWidth
{
    get
    {
        return _rdbWidth;
    }

    set
    {
        _rdbWidth = value;
        OnPropertyChanged();
    }


}
private void MyListView_SizeChanged(object sender, SizeChangedEventArgs e)
{
    RDBWidth = MyListView.ActualWidth;
}

public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string proprtyName = null)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(proprtyName));
}

Код Xaml

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView x:Name="MyListView" SizeChanged="MyListView_SizeChanged">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="Padding" Value="0,0,0,0" />
                <Setter Property="Margin" Value="0,0,0,0" />
            </Style>
        </ListView.ItemContainerStyle>

        <ListView.ItemTemplate>
            <DataTemplate>
                <RichEditBox
                    x:Name="MyRdb"
                    Width="{Binding ElementName=MyListView, Path=DataContext.RDBWidth}"
                    Margin="0"
                    local:BindableREBText.Text="{Binding}"
                    TextAlignment="Justify"
                    />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...