编辑
2026-03-13
C#
00

目录

官网链接
注意点

官网链接

https://docs.avaloniaui.net/zh-Hans/docs/basics/data/data-binding/compiled-bindings

注意点

使用x:CompileBindings="True"打开编译绑定后,才支持类型转换

xaml
<UserControl x:Class="Plugin.Cowain.Wcs.Views.StationManagementView" xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:semi="https://irihi.tech/semi" xmlns:u="https://irihi.tech/ursa" xmlns:conv="using:Cowain.Base.Converters" xmlns:extensions="using:Cowain.Base.Extensions" xmlns:i18n="clr-namespace:Ke.Bee.Localization.Extensions;assembly=Ke.Bee.Localization" xmlns:helper="using:Cowain.Base.Helpers" xmlns:vm="using:Plugin.Cowain.Wcs.ViewModels" x:DataType="vm:StationManagementViewModel" x:CompileBindings="True" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> <UserControl.Resources> <conv:I18nLocalizeConverter x:Key="i18nConverter" /> <helper:BindingProxy x:Key="Proxy" DataContext="{Binding}" /> </UserControl.Resources> <Grid RowDefinitions="Auto * Auto"> <StackPanel Grid.Row="0" Margin="10,8" Orientation="Horizontal" Spacing="10"> <u:IconButton Command="{Binding AddCommand}" IsEnabled="{extensions:MenuEnable StationManagementView, add}" Theme="{DynamicResource BorderlessIconButton}" ToolTip.Tip="{i18n:Localize StationManagement.Tooltip.Add}"> <u:IconButton.Icon> <PathIcon Width="16" Height="16" Data="{StaticResource SemiIconPlusStroked}" /> </u:IconButton.Icon> </u:IconButton> <u:IconButton Command="{Binding RefreshCommand}" CommandParameter="{Binding #page.CurrentPage}" Theme="{DynamicResource BorderlessIconButton}" ToolTip.Tip="{i18n:Localize StationManagement.Tooltip.Refresh}"> <u:IconButton.Icon> <PathIcon Width="16" Height="16" Data="{StaticResource SemiIconRedoStroked}" /> </u:IconButton.Icon> </u:IconButton> </StackPanel> <DataGrid Grid.Row="1" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserSortColumns="True" FrozenColumnCount="2" HeadersVisibility="All" HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding StationList}" RowHeight="30"> <DataGrid.Columns> <DataGridTextColumn Width="70" x:DataType="vm:StationViewModel" Binding="{Binding Id}" Header="{i18n:Localize StationManagement.DataGrid.Id}" IsReadOnly="True" /> <DataGridTemplateColumn Width="100" Header="{i18n:Localize StationManagement.DataGrid.Edit}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationManagementViewModel"> <StackPanel Orientation="Horizontal" Spacing="10"> <u:IconButton Command="{Binding $parent[DataGrid].((vm:StationManagementViewModel)DataContext).SaveCommand}" CommandParameter="{Binding}" IsEnabled="{extensions:MenuEnable StationManagementView, save}" Theme="{DynamicResource BorderlessIconButton}" ToolTip.Tip="{i18n:Localize StationManagement.Tooltip.Save}"> <u:IconButton.Icon> <PathIcon Width="16" Height="16" Data="{StaticResource SemiIconSave}" /> </u:IconButton.Icon> </u:IconButton> <u:IconButton Command="{Binding $parent[DataGrid].((vm:StationManagementViewModel)DataContext).DeleteCommand}" CommandParameter="{Binding}" IsEnabled="{extensions:MenuEnable StationManagementView, delete}" Theme="{DynamicResource BorderlessIconButton}" ToolTip.Tip="{i18n:Localize StationManagement.Tooltip.Delete}"> <u:IconButton.Icon> <PathIcon Width="16" Height="16" Data="{StaticResource SemiIconDeleteStroked}" /> </u:IconButton.Icon> </u:IconButton> </StackPanel> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Width="100" x:DataType="vm:StationViewModel" Binding="{Binding StationName}" Header="{i18n:Localize StationManagement.DataGrid.StationName}" /> <DataGridTextColumn Width="100" x:DataType="vm:StationViewModel" Binding="{Binding StationCode}" Header="{i18n:Localize StationManagement.DataGrid.StationCode}" /> <DataGridTextColumn Width="100" x:DataType="vm:StationViewModel" Binding="{Binding ProcessName}" Header="{i18n:Localize StationManagement.DataGrid.Process}" /> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.StationStatus}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <ComboBox ItemsSource="{Binding $parent[DataGrid].((vm:StationManagementViewModel)DataContext).StationTypeList}" SelectedValue="{Binding StationType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedValueBinding="{Binding .}"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding, Converter={StaticResource i18nConverter}, ConverterParameter='StationType'}" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.StationPos}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <NumericUpDown Increment="1" Value="{Binding StationPos}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.PositionX}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <NumericUpDown Increment="10" Value="{Binding PositionX}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.PositionY}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <NumericUpDown Increment="10" Value="{Binding PositionY}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.PositionZ}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <NumericUpDown Increment="10" Value="{Binding PositionZ}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.LayOutX}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <NumericUpDown Increment="1" Value="{Binding LayOutX}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="140" Header="{i18n:Localize StationManagement.DataGrid.LayOutY}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <NumericUpDown Increment="1" Value="{Binding LayOutY}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Width="110" Header="{i18n:Localize StationManagement.DataGrid.Enable}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate x:DataType="vm:StationViewModel"> <ToggleSwitch IsChecked="{Binding Enable}" OffContent="{i18n:Localize No}" OnContent="{i18n:Localize Yes}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Width="180" x:DataType="vm:StationViewModel" Binding="{Binding CreateTime}" Header="{i18n:Localize StationManagement.DataGrid.CreateTime}" IsReadOnly="True" /> <DataGridTextColumn Width="180" x:DataType="vm:StationViewModel" Binding="{Binding UpdateTime}" Header="{i18n:Localize StationManagement.DataGrid.UpdateTime}" IsReadOnly="True" /> </DataGrid.Columns> </DataGrid> <u:Pagination Name="page" Grid.Row="2" Command="{Binding RefreshCommand}" CommandParameter="{Binding $self.CurrentPage}" CurrentPage="{Binding PageIndex, Mode=TwoWay}" PageSize="{Binding PageSize, Mode=TwoWay}" PageSizeOptions="10, 20, 50, 100" ShowPageSizeSelector="True" ShowQuickJump="True" TotalCount="{Binding Totals}" /> </Grid> </UserControl>

本文作者:zhusenlin

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 版权所有:zhusenlin 许可协议。转载请注明出处!