wpf 相关问题

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

回答 1 投票 0

旋转和调整对象大小

我们使用装饰器在画布上拖放、旋转和调整对象大小。这工作正常,但是当在画布上或其子集上选择所有对象时,我们尝试旋转它们或调整它们的大小

回答 2 投票 0

在后面的代码中设置时,XAML 数据绑定失败

在 WPF 项目中,我有一个名为 RectZone 的 UserControl 开头为 在 WPF 项目中,我有一个名为 RectZone 的 UserControl 开头为 <UserControl x:Class="SublimeTriptych.control.RectZone" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:control="clr-namespace:SublimeTriptych.control" mc:Ignorable="d" AllowDrop="True" xml:lang="fr-FR" Drop="DropRectZone" DragOver="DragOverRectZone" DragEnter="DragEnterRectZone" DragLeave="DragLeaveRectZone" MinHeight="800" MinWidth="400" d:DesignHeight="800" d:DesignWidth="400"> <Grid> <Canvas Background="{Binding ZoneImage, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}"/> <Rectangle Stroke="Black" Visibility="{Binding GuideVisibility, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" StrokeThickness="{Binding FrameThickness, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}"> <Rectangle.Effect> <DropShadowEffect BlurRadius="100" Color="{Binding DropShadowColor, RelativeSource={RelativeSource AncestorType=control:RectZone}}" /> </Rectangle.Effect> </Rectangle> <StackPanel VerticalAlignment="Bottom" Background="#83808080" Visibility="{Binding TitleVisibility, RelativeSource={RelativeSource AncestorType=control:RectZone}}"> <TextBlock> <Run Text="{Binding ActualWidth, StringFormat=N2, FallbackValue=200, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" FontSize="{Binding StatusFontSize, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}"/> <Run Text="X" FontSize="{Binding StatusFontSize, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}"/> <Run Text="{Binding ActualHeight, StringFormat=N2, FallbackValue=450, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" FontSize="{Binding StatusFontSize, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}"/> </TextBlock> <TextBlock Text="{Binding Status, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" FontSize="{Binding StatusFontSize, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" Visibility="{Binding LogVisibility, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}"/> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Title, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" FontSize="{Binding StatusFontSize, Mode=OneWay, RelativeSource={RelativeSource AncestorType=control:RectZone}}" /> </StackPanel> 在后面的代码中,我定义了属性依赖项: public int FrameThickness { get { return (int)GetValue(FrameThicknessProperty); } set { SetValue(FrameThicknessProperty, value); } } public static readonly DependencyProperty FrameThicknessProperty = DependencyProperty.Register(nameof(FrameThickness), typeof(int), typeof(RectZone), new PropertyMetadata(1)); public string Title { get { return (string)GetValue(TitleProperty); } set { SetValue(TitleProperty, value); } } public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(RectZone), new PropertyMetadata("title")); public ImageBrush? ZoneImage { get { return (ImageBrush)GetValue(ZoneImageProperty); } set { SetValue(ZoneImageProperty, value); } } public static readonly DependencyProperty ZoneImageProperty = DependencyProperty.Register(nameof(ZoneImage), typeof(ImageBrush), typeof(RectZone), new PropertyMetadata(null)); public Visibility LogVisibility { get { return (Visibility)GetValue(LogVisibilityProperty); } set { SetValue(LogVisibilityProperty, value); } } public static readonly DependencyProperty LogVisibilityProperty = DependencyProperty.Register(nameof(LogVisibility), typeof(Visibility), typeof(RectZone), new PropertyMetadata(Visibility.Visible)); 我相信所有这些都是正确的,VS2022设计器显示没有问题,但是,我得到了XAML绑定失败: 其中之一的文字版本: Severity: Error Count: 4 Data Context: Visibility Binding Path: TitleVisibility Target: RectZone.TitleVisibility Target Type: Visibility Description File: TitleVisibility property not found on object of type Visibility 错误消息并未导致问题的根源。 我在另一个用户控件RectZone中使用ProjectVarioView,它在以下代码后面的代码中。 我在 ViewModel 中确定了许多 RectZone,但我在后面的代码中设置了数据绑定: 看来所有错误都与我在SetGrid和AddZone中设置的数据绑定(共7个)有关: private void ViewModelChanged(object? sender, PropertyChangedEventArgs e) { if(e.PropertyName != nameof(ViewModel)) return; SetGrid(GridZonesContainer, ViewModel.CompoConf.Cols, ViewModel.CompoConf.Rows, MarginWidth); } private void SetGrid(Grid gridBase, int cols, int rows, int marginWidth) { cols = cols * 2 + 1; rows = rows * 2 + 1; var star = new GridLength(1, GridUnitType.Star); var margin = new GridLength(marginWidth); var marginBinding = new Binding("MarginWidth") { Source = ViewModel.Margins, Mode = BindingMode.TwoWay }; gridBase.SetBinding(MarginWidthProperty, marginBinding); for (int x = 0; x < cols; x++) gridBase.ColumnDefinitions.Add(new ColumnDefinition { Width = x % 2 != 0 ? star : margin }); for (int y = 0; y < rows; y++) gridBase.RowDefinitions.Add(new RowDefinition { Height = y % 2 != 0 ? star : margin }); for (int x = 1, datax = 0; x < cols; x += 2, datax++) for (int y = 1, datay = 0; y < rows; y += 2, datay++) AddZone(x, y, datax, datay); } private void AddZone(int gridx, int gridy, int datax, int datay) { //ZoneImage = "{Binding ZonesData[gridx, gridy].Image, Mode=TwoWay}" //Title = "{Binding ZonesData[gridx, gridy].Title, Mode=TwoWay}" //TitleVisibility = "{Binding TitleVisibility, UpdateSourceTrigger=PropertyChanged}" //GuideVisibility = "{Binding GuideVisibility}" //LogVisibility = "{Binding LogVisibility}" //DebugMode = "{Binding DebugMode, Mode=TwoWay}" /> var mz = new RectZone(); var imageBinding = new Binding("Image") {Source = ViewModel.ZonesData[datax, datay].LastVignette, Mode = BindingMode.TwoWay}; mz.SetBinding(RectZone.ZoneImageProperty, imageBinding); var titleBinding = new Binding("Title") {Source = ViewModel.ZonesData[datax, datay].Name, Mode = BindingMode.TwoWay }; mz.SetBinding(RectZone.TitleProperty, titleBinding); var titleVisibilityBinding = new Binding("TitleVisibility") { Source = ViewModel.TitleVisibility }; mz.SetBinding(RectZone.TitleVisibilityProperty, titleVisibilityBinding); var guideVisibilityBinding = new Binding("GuideVisibility") { Source = ViewModel.GuideVisibility }; mz.SetBinding(RectZone.GuideVisibilityProperty, guideVisibilityBinding); var logVisibilityBinding = new Binding("LogVisibility") { Source = ViewModel.LogVisibility }; mz.SetBinding(RectZone.LogVisibilityProperty, logVisibilityBinding); var debugModeBinding = new Binding("DebugMode") { Source = ViewModel.DebugMode, Mode = BindingMode.OneWay }; mz.SetBinding(RectZone.DebugModeProperty, debugModeBinding); GridZonesContainer.Children.Add(mz); Grid.SetRow(mz, gridy); Grid.SetColumn(mz, gridx); _ZonesList.Add(mz); } ViewModel 有这个属性,其他 ViewModel 的数组: public ZoneViewModel[,] ZonesData { get => _zonesData; set { if (Equals(value, _zonesData)) return; _zonesData = value; OnPropertyChanged(); } } 和: public Visibility TitleVisibility { get => _titleVisibility; set { if (value == _titleVisibility) return; _titleVisibility = value; OnPropertyChanged(); } } public Visibility GuideVisibility { get => _guideVisibility; set { if (value == _guideVisibility) return; _guideVisibility = value; OnPropertyChanged(); } } public Visibility LogVisibility { get => _logVisibility; set { if (value == _logVisibility) return; _logVisibility = value; OnPropertyChanged(); } } ZoneViewModel 实现了这个接口: public interface IMediaViewModel : INotifyPropertyChanged { public StopwatchBag Sw { get; } public Uri URI { get; } public ImageSize ImageSize { get; set; } public string Name { get; set; } public string Filepath { get; set; } public DateTime Created { get; set; } public DateTime Modified { get; set; } public long SizeBytes { get; set; } public ImageBrush LastVignette { get; set; } public IReadOnlyList<Directory>? Metadata { get; set; } public bool HasMetadata { get; } public bool HasVignettes { get; } public Dictionary<string, string> MetaDic { get; } } 我做错了什么? 问题出在Binding实例创建上;我误用了Path(构造函数中的字符串arg),Source应该是包含属性的ViewModel(在Path中指示)。 例如,在实践中,而不是: var imageBinding = new Binding("Image") {Source = ViewModel.ZonesData[datax, datay].LastVignette, Mode = BindingMode.TwoWay}; var imageBinding = new Binding("LastVignette") {Source = ViewModel.ZonesData[datax, datay], Mode = BindingMode.TwoWay};

回答 1 投票 0

WPF:在自定义滚动查看器中,垂直滚动条比水平滚动条粗

我正在使用 WPF 作为应用程序。在XAML代码中,我定义了水平滚动条和垂直滚动条的宽度和高度。不过垂直滚动条还是比较粗...

回答 1 投票 0

为什么我的 WPF 弹出窗口会被父变换缩放?

我有一个包含 的自定义 WPF UserControl,其中包含 元素。自定义控件可由用户缩放/调整大小,但我希望 Popup 元素出现在

回答 1 投票 0

在 WPF 触摸应用程序模态窗口中触摸时按钮卡在悬停状态

我正在开发一个专为触摸屏设计的WPF应用程序。有一个模式窗口,上面有“新建”按钮。该按钮有 3 种状态: 普通的: 悬停(橙色背景): 按下(或者...

回答 1 投票 0

项目更改时更新 WPF 列表

我有一个 WPF ListBox,并且我添加了一些“FooBar”对象作为项目(通过代码)。 FooBars 不是 WPF 对象,只是带有覆盖的 ToString() 函数的愚蠢类。 现在,当我更改属性时

回答 5 投票 0

WPF ScrollViewer 带按钮水平滚动

我在 ScrollViewer 中有一个水平方向的列表框。当列表增长时,它会自动滚动到最后一个元素。但是,必须为此禁用滚动条。我需要...

回答 1 投票 0

WPF 并将 ToolTip 绑定到 DisplayAttribute

在我的视图模型中,我已将 DisplayAttributes 添加到我的属性中,现在希望将 TextBox 控件的 ToolTip 属性绑定到 DisplayAttribute 的 Description 属性。 我...

回答 2 投票 0

有没有办法让组合框项目的全部内容变成不同的颜色?

我正在寻找一种方法来更改整个组合框项目内容的颜色,而不仅仅是如下图所示的文本: 我正在努力实现这样的目标: 到目前为止我拥有的代码...

回答 1 投票 0

在 WPF 中更改组合框的背景颜色而不粘贴整个模板?

我知道你可以右键单击,编辑模板>编辑副本,粘贴整个 ComboBox 模板,然后更改几行,但是真的没有办法在短短几里内更改背景吗...

回答 2 投票 0

更新后ClickOnce文件被覆盖

我的 clickonce 应用程序包含一个包含数据的文件。其构建操作设置为“内容较新,则复制到输出目录”。用户在使用应用程序时将更改此数据文件。制作完

回答 1 投票 0

在哪里创建HttpClient并在哪里调用?

我是 C# 新手,我正在尝试解决问题。我需要向端点发送请求。我无法理解 C# 项目结构。我正在使用 WPF。保持 HttpClie 的最佳做法是什么...

回答 1 投票 0

导致错误 MC1000 的原因:未知构建错误,“找不到程序集 'System.Runtime.InteropServices.PInvoke...”

完整的错误信息是 代码:MC1000 描述:未知的构建错误,“找不到程序集”System.Runtime.InteropServices.PInvoke,版本=4.0.0.0,文化=中性,PublicKeyToken=

回答 1 投票 0

我的 WPF 页面中的按钮不会更新,除非我重新打开页面

我的 WPF 应用程序中有一个页面。我需要一个可以激活和停用的按钮。它实际上可以工作,但是当它激活时,我在屏幕上看不到它。如果我打开另一个页面,然后打开我的...

回答 1 投票 0

在 WPF 中的 XAML 中自定义属性窗口

我使用 SqlCommand 属性实现了一个自定义 TextBox。 当 SqlCommand 具有绑定时 那么,SqlCommand 值字段是...

回答 1 投票 0

C# WPF 访问 DataGridTextColumn 标题内的 TextBox

我有这个代码。 我有这个代码。 <DataGridTextColumn Binding="{Binding nazwisko}" Header="Nazwisko" IsReadOnly="True" ElementStyle="{StaticResource verticalCenter}" FontSize="14" HeaderStyle="{StaticResource HeaderStyle}" Width="195"> <DataGridTextColumn.HeaderTemplate> <DataTemplate> <StackPanel> <Label VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="-5,0,0,5" Content="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Parent.ActualWidth}"/> <TextBox x:Name="txt_name" MinHeight="20" TextChanged="Filtr_TextChanged"/> </StackPanel> </DataTemplate> </DataGridTextColumn.HeaderTemplate> <DataGridTextColumn.CellStyle> <Style TargetType="DataGridCell"> <Setter Property="Foreground" Value="{Binding FontColor}"/> </Style> </DataGridTextColumn.CellStyle> 我想清除文本框“txt_name”中的值。我有按钮“重置”,当他被单击时,文本框应该被清除。我怎样才能做到这一点?请帮忙:(. 您可以将 TextBox 值绑定到 祖先 DataContext。 如果您有将 ViewModel 绑定为 DataContext 的 Window: public class MainWindowViewModel : ObservableObject { private string _headerText = "InitialValue"; public string HeaderText { get => _headerText; set => SetProperty(ref _headerText, value); } public IRelayCommand Reset { get; } public MainWindowViewModel() { Reset = new RelayCommand(OnReset); } private void OnReset() { HeaderText = string.Empty; } } 然后你可以像这样使用它: ... <DataGridTextColumn.HeaderTemplate> <DataTemplate> <StackPanel> <Label VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="-5,0,0,5" Content="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Parent.ActualWidth}"/> <TextBox x:Name="txt_value" Text="{Binding DataContext.HeaderText, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" MinHeight="20"/> </StackPanel> </DataTemplate> </DataGridTextColumn.HeaderTemplate> ... <Button Content="Reset" Command="{Binding Reset}"/> ...

回答 1 投票 0

WPF - 在 DrawingContext 中绘制填充多边形

是否有一种“简单”的方法可以在 DrawingContext 中绘制填充六边形? 或者答案是“这就是为什么 DrawingContext 有一个 DrawGeometry 方法”?

回答 1 投票 0

DateTime.Now 随着时间的推移是否不一致?

我的应用程序通过 UART 从总线记录电报。对于每封电报,我都会在接待处添加带有 DateTime.Now 的时间戳。现在我有这样的现象,有时下一个电报时间戳是

回答 1 投票 0

带有标题“*”的 DataGridColumn 已存在于 DataGrid 的 Columns 集合中

我有一个采用 MVVM 模式的 WPF 应用程序。在我的一种观点中,我必须绑定一个 ObservableCollection 来查看。在该视图中,我有一个 ListBox 和一个 DataGrid 都绑定到同一个 ObservableColl...

回答 6 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.