Xaml UWP RichEditBox最初在ListView中只显示一行

Xaml UWP RichEditBox最初在ListView中只显示一行,xaml,uwp,Xaml,Uwp,我尝试了这里建议的解决方案: 看起来它正在工作,但底层控件有一个bug使它变得无用-控件只显示一行文本,直到您将指针放在它上面,当它达到适当的大小时。在分配文本后,我试图强制执行该度量,但到目前为止,我无法使其生效。有人知道如何解决这个bug吗 UWP RichEditBox最初在ListView中只显示一行 问题是您没有指定RichEditBox的宽度,并且RichEditBox宽度与ListViewitem不匹配。目前,我们有一个解决方案,需要使用绑定方式动态更改RichEditBo

我尝试了这里建议的解决方案:


看起来它正在工作,但底层控件有一个bug使它变得无用-控件只显示一行文本,直到您将指针放在它上面,当它达到适当的大小时。在分配文本后,我试图强制执行该度量,但到目前为止,我无法使其生效。有人知道如何解决这个bug吗

UWP RichEditBox最初在ListView中只显示一行

问题是您没有指定
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>


您能否分享一份SCENSHOT来解释这一点,我们无法复制此问题。@NicoZhu MSFT感谢您的评论。我已经从那个页面复制了代码,但是它设置了宽度和高度,这没有意义,所以现在查看代码并检查它。我现在没有一个示例,但基本上它在列表项中显示了一本小说的每一段,但是RichEditBox会折叠到文本的一行,直到你将鼠标放在上面。如果您仍然无法复制,我将在github上创建一个示例。您的项目工作正常吗?@NicoZhu MSFT,否-正如上面的评论中所说,我已经在这里发布了示例中的代码,其中包含了不应该存在的宽度限制,根据屏幕截图,您似乎也这样做了,它可能会影响行为。另外,为了报告一个问题,
x:Bind
不适用于
RichEditBox.fontwweight
,因为它适用于其他属性,普通绑定也适用,我想这是一种缺陷。
<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>