Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
我正在 WebView2 中构建一个简单的浏览器,我正在尝试向选项卡添加页面标题。我已经编写了脚本来获取页面标题和选项卡名称,但现在我无法设置标题本身。 这是剧本...
我尝试向 RefactorListItemControl 提供存储在 RefactorOperations 中的字典的键/值,该字典显示在 1 列 DataGrid 中 在父类中,RefactorOperations 属性...
为什么我的 Image 和 MediaElement 无法在不重叠的情况下融入 Border?
我试图确保图像和 MediaElement 整齐地适合边框而不重叠。 VS 的截图,带标签: 简化的 XAML 结构: 我试图确保 Image 和 MediaElement 整齐地贴合在 Border 内而不重叠。 VS 截图,带标签: 简化的XAML结构: <Grid Background="Transparent"> <Border BorderThickness="2" CornerRadius="16" ClipToBounds="True"> <Border.BorderBrush> <SolidColorBrush x:Name="GridBorderBrush" Color="{DynamicResource ColorBrand0}"/> </Border.BorderBrush> <Grid> <Viewbox> <Grid x:Name="Container"> <Image x:Name="ImageSource" Stretch="Uniform" Source="../UIScreens/Images/PlaceHolder.png"> <Image.Clip> <RectangleGeometry> <RectangleGeometry.Rect> <MultiBinding Converter="{StaticResource RectConverter}"> <Binding Path="ActualWidth" ElementName="ImageSource"/> <Binding Path="ActualHeight" ElementName="ImageSource"/> </MultiBinding> </RectangleGeometry.Rect> </RectangleGeometry> </Image.Clip> </Image> <MediaElement x:Name="MediaPlayer" Stretch="Uniform" LoadedBehavior="Manual" UnloadedBehavior="Manual" MediaOpened="OnMediaOpened" Opacity="0"> <MediaElement.Clip> <RectangleGeometry> <RectangleGeometry.Rect> <MultiBinding Converter="{StaticResource RectConverter}"> <Binding Path="ActualWidth" ElementName="MediaPlayer"/> <Binding Path="ActualHeight" ElementName="MediaPlayer"/> </MultiBinding> </RectangleGeometry.Rect> </RectangleGeometry> </MediaElement.Clip> </MediaElement> </Grid> </Viewbox> </Grid> </Border> </Grid> 我该怎么做才能确保 Image(和 MediaElement)保持在 Border 内并尊重圆角而不重叠? PS:设置RadiusX的RadiusY和RectangleGeometry不符合我的额外要求。 它应该尊重边界的 CornerRadus。 我认为对于你的构图,你的“边框”需要位于 ViewBox 的“内部”以及 ViewBox 中的网格周围。这是你想要框架的ViewBox的“内容”;而不是ViewBox? (边框和边框内的内容应该尊重 ViewBox)。
我有一个数据网格,需要设置列格式类型,例如日期时间格式。 我的代码中有一个方法,可以调用该方法来设置列格式。 我创建了一个
WPF MVVM 绑定超链接RequestNavigate 到视图模型
在 WPF 表单上,我有一个超链接,单击该超链接时应该会在重定向到内部网页之前聚合数据库中的一些数据。 当前 XAML 如下所示: 在 WPF 表单上,我有一个超链接,单击该超链接后应该会在重定向到内部网页之前聚合数据库中的一些数据。 当前 XAML 如下所示: <Hyperlink RequestNavigate="Hyperlink_RequestNavigate" IsEnabled="{Binding CanTakePayment}"> Launch Payments Portal </Hyperlink> 使用 Hyperlink_RequestNavigate 方法来执行数据库操作,该方法位于 View.xaml.cs 看起来像: private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) { var transactionReference = GetToken(100M, "13215", "product"); var url = string.Format("{0}New?transactionReference={1}", Settings.Default.PaymentUrlWebsite, transactionReference); e.Handled = true; } 我不喜欢这种机制,更愿意将其移至视图模型。 我尝试做的是添加到 ViewModel 属性 public ICommand NavigateToTakePayment { get { return _navigateToTakePayment; } set { _navigateToTakePayment = value; } } 并在 XAML 中将绑定更改为 <Hyperlink RequestNavigate="{Binding Path=NavigateToTakePayment}" IsEnabled="{Binding CanTakePayment}"> Launch Payments Portal </Hyperlink> 但它开始给我抛出异常。 将此机制从 View 转移到 ViewModel 最合适的方法是什么? HyperLink是一个有点问题的孩子。不支持命令绑定。 可以使用附加属性将命令绑定支持硬塞到其中,但修改按钮来完成相同的操作会更容易。 <Style TargetType="Button" x:Key="HyperlinkStyledButton"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <TextBlock Foreground="DodgerBlue" Text="{TemplateBinding Content}" TextDecorations="Underline" Cursor="Hand" /> </ControlTemplate> </Setter.Value> </Setter> </Style> 然后使用这样的超链接: <Button Command="{Binding OpenHttpLinkCommand}" Content="www.google.com" Style="{StaticResource HyperlinkStyledButton}" ToolTip="Some custom tooltip"/> 假设标准 MVVM 绑定工作正常: 在视图模型中: public ICommand OpenHttpLinkCommand { get; } 在 ViewModel 构造函数中: this.OpenHttpLinkCommand = new DelegateCommand(this.OnOpenHttpLinkCommand); 以及通过链接打开浏览器的命令: private void OnOpenHttpLinkCommand() { try { System.Diagnostics.Process.Start("http://www.google.com/"); } catch (Exception) { // TODO: Error. } } 您的应用程序的问题是ICommand在使用前未初始化。我有一个像这样的命令实现: public class RelayCommand : ICommand { Predicate<object> _canExecute; Action<object> _execute; bool _defaultBehaviourForCanExecute; public RelayCommand(Action<object> execute, bool defaultBehaviourForCanExecute = true, Predicate<object> canExecute = null) { _canExecute = canExecute; _execute = execute; _defaultBehaviourForCanExecute = defaultBehaviourForCanExecute; } public bool CanExecute(object parameter) { if (_canExecute != null) { Logger.LogInformation("Evaluating can execute method for " + _canExecute.Method.DeclaringType + "->"+_canExecute.Method.Name); return _canExecute.Invoke(parameter); } return _defaultBehaviourForCanExecute; } public event EventHandler CanExecuteChanged; public void RaiseCanExecuteChanged() { if (CanExecuteChanged != null) CanExecuteChanged(this, new EventArgs()); } public void Execute(object parameter) { Logger.LogInformation("Executing command method for " + _execute.Method.DeclaringType + "->" + _execute.Method.Name); _execute.Invoke(parameter); RaiseCanExecuteChanged(); } } 现在这正在我的ViewModel中初始化,如下所示: NavigateToTakePayment = new RelayCommand(navigateToTakePayment CommandMethod);//it also can take canExecute method if you need a condition before executing. 然后在你的 xaml 中像这样使用它: <Hyperlink RequestNavigate="{Binding Path=NavigateToTakePayment}" IsEnabled="{Binding CanTakePayment}"> Launch Payments Portal </Hyperlink> 顺便说一句:当您需要禁用超链接时,请实现canexecute方法,然后它会自动完成。 旧线程,但对于那些像我一样仍然遇到它的人,Hyperlink确实支持ICommandBinding,但你需要一个派生类来这样做: using System.Windows.Documents; public class HyperlinkCommander : Hyperlink { protected override void OnClick() { Command.Execute(null); } } 然后在您的 xaml 中使用它,就像将 Button 绑定到 ViewModel 中的 ICommand 时一样,在本例中称为 HyperlinkClickerCommand。 像这样的东西: <localControls:HyperlinkCommander Command="{Binding HyperlinkClickerCommand}" > Click me! </localControls:HyperlinkCommander> 在 xaml 顶部附近有类似这样的内容: <Window ... xmlns:localControls="clr-namespace:TestProject.Controls" ... > 其中 HyperlinkClickerCommand 是您要绑定到的 ViewModel 中的命令。 上面的超链接将触发绑定命令的 Execute,并遵守它的 CanExecute。
我这里有一个 ListView,它显示为一个项目,另一个 ListView 还包含更多项目。 所以我会尝试更好地解释。 对于 ListViewMother 的每一行,我想要一个链接到数据的 Listview...
第一个如果你工作了,但其他工作我真的不知道为什么。另外,当我今天的时候,它似乎对我有用。 今天字符串=“999/9”; if (今天 == DateTime.Now.ToString...
我想了解,有一个带有两个值的枚举,如何将它们显示在具有相关复选框的列表框中,以及它们是否被选中 这是代码: 公共枚举类型 { 类型_A, 类型_...
如何修复 Microsoft graph api 抛出 邮箱处于非活动状态、软删除或在创建事件时在本地托管
我想创建约会日历事件。我已在天蓝色广告中添加用户,并分配了委托权限 Calendars.ReadWrite。 但是,在通过以下几行创建事件时,它会抛出错误: 变种
我正在开发一款trivia kahoot风格的游戏,客户端基于WPF框架(向所有有同样问题的magshimim同学问好) 当加载游戏窗口时,假设...
WPF MVVM ListView 和 TextBox OnPropertyChanged 工作正常,但选项卡控件不行
过去几周,当我更改列表视图文本框中的值时,我很难解决在选项卡控件中进行更改的问题,反之亦然。 列表视图和文本框一切正常,但我不是...
将 ReturnCommand 添加到 WPF 自定义文本框
我有一个自定义文本框控件,它工作得很好。 公共类 TextBoxExt :文本框 { 公共事件 ehEmptyArgument ClearAll,保存; 公共 TextBoxExt() { 设置资源参考...
我正在使用VS2010 VB.NET,正在开发一个包含多个项目的解决方案。 我已经开发了一段时间了,并试图调试从 ObservableColl 继承的自定义类......
如何确保带有 RectangleGeometry 和 MultiBinding 的 Image 和 MediaElement 在 WPF 中不重叠地适合 Border?
我试图确保 Image 和 MediaElement(应用了 RectangleGeometry 剪辑和 MultiBinding)整齐地适合 Border 内,而不重叠其边界。 这是一个
我正在尝试将 WPF 应用程序从 .NET Framework 4.7.2 更新到 .NET 8。使用 Visual Studio 中的升级选项,我已更新了所有项目并解决了我的依赖项。 我想不通的是……
我想构建一个支持Windows 8.1的彩色表情符号的Windows应用程序。我似乎在任何地方都找不到实际说明,但情况似乎如此,除非你......
MAUI/WPF,对特定于操作系统的项目进行单元测试时出现错误 NU1201(项目 TargetFramework 兼容性问题)
我在 .NET MAUI 和 WPF 中遇到此问题。我只想建立一个针对 MAUI 或 WPF 项目的单元测试项目(顺便说一句,这些项目位于单独的解决方案中)。问题是 MSTest 项目...
您好,我在 WPF 中配置 oxyplot 时遇到问题。我找到了一些解决方案,但没有任何效果。我发现这是最好的http://blog.bartdemeyer.be/2013/03/creating-graphs-in-wpf-using-
在 Visual Studio 扩展中的 VSIX 项目的单独项目/库中创建 OptionsProvider
我正在制作一个 VS 扩展来管理 Github 问题。由于 CommunityToolkit.MVVM 的一些特殊性,并且根据 @Sergio0694 的建议,我不得不将我的 ViewModel、服务等分成单独的...
WPF 中的 Application.ProductName 等效项?
我有一个类库,在主 GUI 应用程序下嵌套了两层以上,在该嵌套类库中我希望能够访问主应用程序名称。 在 .Net 3.5 下你可以调用