Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
我想在我的 Canvas 用户 MVVM 模型上创建一个用户控件
我有问题.. 我想尝试在画布上创建一个用户控件 但这不起作用,Visual Studio 检查此代码没有任何错误 我有问题.. 我想尝试在画布上制作用户控件 但是 Visual Studio 检查此代码没有任何错误是行不通的 <Grid Grid.Row="1" Grid.Column="1" Background="DarkGray"> <ItemsControl ItemsSource="{Binding Shelfs}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemContainerStyle> <Style TargetType="ContentPresenter"> <Setter Property="Canvas.Left" Value="{Binding X}"/> <Setter Property="Canvas.Top" Value="{Binding Y}"/> </Style> </ItemsControl.ItemContainerStyle> <ItemsControl.ItemTemplate> <DataTemplate> <ContentControl> <ContentControl.Style> <Style TargetType="ContentControl"> <Style.Triggers> <!-- Assuming UCShelf is the default type --> <DataTrigger Binding="{Binding Type}" Value="Port"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <UC:UCPort Width="{Binding Width}" Height="{Binding Height}" Visibility="Visible"/> </DataTemplate> </Setter.Value> </Setter> </DataTrigger> <DataTrigger Binding="{Binding Type}" Value="Shelf"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <UC:UCShelf Width="{Binding Width}" Height="{Binding Height}" Visibility="Visible"/> </DataTemplate> </Setter.Value> </Setter> </DataTrigger> </Style.Triggers> </Style> </ContentControl.Style> </ContentControl> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Grid> This is my Canvas in MainWindow private ObservableCollection<Shelf> _shelfs; public IEnumerable<Shelf> Shelfs => _shelfs; public MainViewModel() { _shelfs = new ObservableCollection<Shelf>(); } private ICommand addShelfCommand; public ICommand AddShelfCommand { get { return (this.addShelfCommand) ?? (this.addShelfCommand = new RelayCommand(AddShelf)); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private void AddShelf() { if(_shelfs == null) { _shelfs = new ObservableCollection<Shelf>(); } _shelfs.Add(new Shelf {X = (_shelfs.Count * 40), Y = 10, Width = 30, Height = 30 }); OnPropertyChanged(nameof(Shelfs)); MessageBox.Show("Total Shelf = " + _shelfs.Count); } `这是我的 MainViewModel' 所以..我错过了什么?' '我单击按钮 AddShelfCommand、AddPortCommand 但没有反应 AddshelfCommand 和 AddPortCommand 正在工作,但我无法检查 UI` Left和Top是Canvas'附加属性,不是普通属性。因此,您必须使用特殊语法才能正确绑定它们: <ItemsControl.ItemContainerStyle> <Style TargetType="ContentPresenter"> <Setter Property="(Canvas.Left)" Value="{Binding X}"/> <Setter Property="(Canvas.Top)" Value="{Binding Y}"/> </Style> </ItemsControl.ItemContainerStyle> 注意包裹 Canvas.Left 和 Canvas.Top 路径的括号。
ListView 中的 DataTemplate(带有 VirtualizingStackPanel)导致 StackOverflow
我有一种数据类型元数据,其中包含视频或图像的文件路径。我正在尝试使用 DataTemplate 来显示该数据类型。将会有数千个这样的物体......
WPF 用户控件在 Visual Studio 2022 XAML 编辑器中无法正确显示
我最近开始使用 Visual Studio 2022 继续开发一个长期存在的 WPF 项目(最初在 Visual Studio 2017 中开发,最近在 Visual Studio 2019 中开发)。 一切...
我正在寻找对 RichTextBox 行进行排序的最佳方法,我现在正在使用它: 公共无效SortLines(对象发送者,EventArgs e) { TextPointer pStart = TextInput.Document.ContentStart;
WPF DataGrid - 如何从 ViewModel 中选择位置 [0,0] 的单元格
我有一个SelectionMode =“Single”SelectionUnit =“Cell”的DataGrid。 目前,当显示 DataGrid 时,最初不会选择任何单元格。 我有两个场景需要解决...
MaterialDesign-Flipper WPF:对齐和缩放是倾斜的。
我在 WPF XAML 应用程序中使用 Material Design,我有下面的这部分代码,当网格位于“materialDesign:Flipper”之外时,它都会正确呈现;即-它生长/伸展
目前,我使用.NET 8开发了一个WPF应用程序。在分发应用程序时,有两种方法。 一是利用VS自带的发布功能集成runti...
WPF中使用flowdocument打印预览时,如livecharts2,部分内容不显示的问题如何解决?
如何解决在WPF flowdocument中使用livecharts2,打印预览时不显示其内容的问题?谢谢。 1.FlowDocument1.xaml: 如何解决在WPF flowdocument中使用livecharts2,打印预览时不显示其内容的问题?谢谢你。 1.FlowDocument1.xaml: <FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF" xmlns:local="clr-namespace:Wpf.Start.Assets.Prints" ColumnWidth="400" FontSize="14"> <Paragraph TextAlignment="Center" FontSize="16" FontWeight="Bold"> <Run Text="{Binding Name}"></Run> </Paragraph> <BlockUIContainer> <Grid Background="#888"> <lvc:CartesianChart Height="300" Series="{Binding Series1}" XAxes="{Binding XAxes1}" YAxes="{Binding YAxes1}" /> </Grid> </BlockUIContainer> </FlowDocument> 2.MainViewModel.cs: var printPre = new PrintPreView("Assets/Prints/FlowDocument1.xaml", DeviceInfo); printPre.ShowDialog(); 3.PrintPreView.xaml: <Window x:Class="Wpf.Start.Views.PrintPreView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 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:lvc="clrnamespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF" xmlns:local="clr-namespace:Wpf.Start.Views" mc:Ignorable="d" Title="" Height="450" Width="800"> <Grid> <DocumentViewer Name="viewer" /> </Grid> </Window> 4.PrintPreView.xaml.cs: public PrintPreView(string fileName, DeviceInfo data) { InitializeComponent(); var flowDocument = (FlowDocument)Application.LoadComponent(new Uri(fileName, UriKind.RelativeOrAbsolute)); flowDocument.DataContext = data; Dispatcher.BeginInvoke(() =\> { MemoryStream ms = new MemoryStream(); Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite); Uri DocumentUri = new Uri("pack://InMemoryDocument.xps"); PackageStore.RemovePackage(DocumentUri); PackageStore.AddPackage(DocumentUri, package); XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.Fast, DocumentUri.AbsoluteUri); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument); var paginator = (flowDocument as IDocumentPaginatorSource).DocumentPaginator; writer.Write(paginator); viewer.Document = xpsDocument.GetFixedDocumentSequence(); xpsDocument.Close(); }, DispatcherPriority.ApplicationIdle); } 在'PrintPreView.xaml.cs'文件名中,'flowDocument.DataContext'为空,你应该让它绑定到它的ViewModel。 我用你的代码做了一个程序演示,运行良好,在打印预览中成功显示其内容! 这里是演示 github:https://github.com/zzp229/StackOverFlow-1-livecharts2-
当远程关闭时,Visual Studio 2022 不断尝试远程调试
我有一个项目,我曾经做过一些远程调试。它发现了问题并修复了它。然后我关闭了远程调试,但是当我尝试运行该项目时,它仍在尝试远程...
如何在wpf中使用MVVM模式进行框架导航(相同视图,不同VM)?
我正在开发一个爬虫程序,我希望它有与浏览器类似的体验,即我可以后退/前进,我想使用 Frame 控件,但我不知道该怎么做,我的观点是...
我正在使用 WPF 和 C# 为我的语言 EasyBite 创建 IDE,我向 IDE 添加了一个输出面板,以使用 Process 类显示所联系的命令提示符的输出,一切正常...
我不确定这是否可行,甚至不是一个好的方法,但我有一个 WPF 应用程序,它使用从 xsd 文件生成的 C# 类。该类是通过在术语中使用 xsd.exe 手动生成的...
ObservableCollection itemsource 更新并失去控制焦点的问题
我尝试了几个小时来寻找并解决不同的混乱“解决方法”,但一无所获。我有一个 DataGrid,其中 itemsource 绑定到 ObservableCollection 和
在 App.xaml.cs 之外的 WPF 中设置 DataContext
我有一个显示 LoginView、SignUpView 和 StoreView 的 MainWindow。 DataContext 在这里工作正常。 在 StoreView 内部,它应该显示几个其他视图,默认为 Ho...
使用正则表达式对十进制数进行 Wpf 文本框文本验证(以 0.25 为增量)[重复]
我正在为 WPF 创建一个自定义 NumericUpDown 控件,并且需要验证用户在文本框中的输入。我不确定 TextChanged 事件是否是执行此操作的正确位置,但这就是我的
我来自 WinForms,第一次自学 WPF。 我想我应该从在 WPF 中重新创建我的一个 WinForms 应用程序的界面开始,但我的菜单已经出现了问题....
我想使用新的 MVVM 在 WPF 中的 Xamarin 表单中隐藏标题栏。我想在全屏模式下显示我的播放器页面,没有任何边框,并隐藏最小化、最大化和关闭按钮 我用过
有没有办法使用Powershell和WPF向循环中的多个按钮添加点击事件?
我有几个按钮在不同的列表框中执行相同的功能(对它们进行排序,或打开 Out-GridView 来搜索它们)。我想通过添加 click
WPF,基于(装饰器类)的自定义控件,装饰器的子级的垂直或水平对齐方式设置后生效
我想要一个自定义控件来包裹它的子控件并添加四个FrameworkElements作为(边框边),所以我选择了WPF的Decorator类,该类和xaml都在下面的githu中...