You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从WPF迁移至Avalonia:DataGridTextColumn样式设置难题

Avalonia中DataGridTextColumn样式适配方案

Avalonia的DataGrid控件实现与WPF存在差异,直接迁移WPF的CellTemplate写法会失效,以下是适配后的代码:

<DataGridTextColumn Binding="{Binding Name}" Header="Имя">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="DataGridCell">
                        <Label>
                            <Label.Content>
                                <MultiBinding Converter="{StaticResource TextBoxMiscConverter}">
                                    <Binding Path="Name"/>
                                    <Binding Path="IsChecked" Source="{x:Reference ShowEnglishCbx}"/>
                                    <Binding Path="IsChecked" Source="{x:Reference ShowRussianCbx}"/>
                                </MultiBinding>
                            </Label.Content>
                        </Label>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

关键修改点:

  • Avalonia中引用命名控件需用{x:Reference}替代WPF的ElementName
  • ControlTemplate的TargetType无需{x:Type}前缀,直接指定控件类型名
  • 若无需Label的额外样式,可替换为更轻量的TextBlock优化性能:
<ControlTemplate TargetType="DataGridCell">
    <TextBlock>
        <TextBlock.Text>
            <MultiBinding Converter="{StaticResource TextBoxMiscConverter}">
                <Binding Path="Name"/>
                <Binding Path="IsChecked" Source="{x:Reference ShowEnglishCbx}"/>
                <Binding Path="IsChecked" Source="{x:Reference ShowRussianCbx}"/>
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</ControlTemplate>

注意:确保ShowEnglishCbx和ShowRussianCbx已通过x:Name正确命名,且处于当前XAML的可访问命名范围内。

内容的提问来源于stack exchange,提问作者Sfairait

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:35:26