我正在研究WPF应用程序.我已将文本块绑定到我的按钮.当关联按钮的isEnabled为true时,我想将文本块的前景设置为黑色.我想用转换器做这个.但它不起作用.也没有给出任何错误.我在"Models"文件夹中声明了以下类.
public class BrushColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value)
{
{
return System.Windows.Media.Colors.Black;
}
}
return System.Windows.Media.Colors.LightGreen;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
Button的启用,可从viewmodel更改属性(例如使用RaiseCanExecuteChanged)())
XAML中与textblock相关的东西是:
<Window.Resources>
<local:BrushColorConverter x:Key="BConverter"></local:BrushColorConverter>
</Window.Resources>
<Button>(!..all button properties..!)</Button>
<TextBlock x:Name="AnswerText"
Text="Answer"
Foreground="{Binding ElementName=AnswerButton,Path=IsEnabled, Converter={StaticResource BConverter}}"
TextWrapping="Wrap"/>
Run Code Online (Sandbox Code Playgroud) 我知道这听起来可能是重复的问题(比如这个或者这个)但是我想要清楚一下这个查询中会发生的数字迭代.
我的假设如下:
假设我收集了1000件商品.
在Where()查询中,它遍历每个项目并将其添加到IEnumerable.即它总是需要O(n).
foreach (var item in myList)
{
if(//<condition>)
{
//add it to list/enumerable
}
//continue through entire list
}
Run Code Online (Sandbox Code Playgroud)在FirstOrDefault(<condition>)查询中,它开始迭代集合并在获得与之匹配的项<condition>并且返回单个元素时立即中断循环,或者仅在没有项匹配的情况下断开循环,<condition>然后它将遍历整个列表.
所以复杂性可以从O(1)到O(n)
foreach (var item in myList)
{
if(//<condition>)
{
//return item
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果这是正确的,那么将FirstORDefault用于单个项目返回总是更好.
我提到这个答案,但它不起作用.列仍然会扩展为Row内容.重新排列单元格时,列大小会以某种方式更新
我的习惯DataGridCellsPanel.ArrangeOverride:
protected override Size ArrangeOverride(Size arrangeSize)
{
var firstCell = Children[0];
firstCell.SetValue(Panel.HorizontalAlignmentProperty, HorizontalAlignment.Left);
firstCell.Arrange(new Rect(arrangeSize));
for (int i = 1; i < Children.Count; i++)
{
var remainingCell = Children[i];
remainingCell.Arrange(new Rect(0,0,0,0));
}
return arrangeSize;
}
Run Code Online (Sandbox Code Playgroud)
我的DataGridRow.Template:
<Style x:Key="SpanRowStyle" TargetType="DataGridRow">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRow}">
<Border>
<DataGridCellsPresenter Foreground="Black">
<DataGridCellsPresenter.ItemsPanel>
<ItemsPanelTemplate>
<controls:DataGridSpannedCellPanel/>
</ItemsPanelTemplate>
</DataGridCellsPresenter.ItemsPanel>
</DataGridCellsPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
请帮忙.
我的应用程序使用ICommands 将方法绑定到按钮。
我初始化这些命令如下:
AnswerCommand = new DelegateCommand(AnsCommandExecute, AnsCommandCanExecute);
Run Code Online (Sandbox Code Playgroud)
我想知道该AnsCommandExecute()方法是否适用于 UI 线程或后台线程?
如果它在 UI 线程上工作,我是否必须为此 execute() 方法创建另一个线程,因为我的应用程序在后台执行大量处理。
我的应用程序还使用 TCP 与另一应用程序进行通信。因此,为了获得更好的性能,我是否必须使用不同的线程来接收数据、处理和发送数据。对于此类应用程序,最佳的线程方法是什么?
我在应用程序中有一个WPF窗口,我可以通过调用MainView.Activate();和MainView.BringIntoView();方法在某些特定情况下激活它。它还将焦点设置在此“ MainView”窗口上。
但我的要求是,该窗口不应获得焦点。即我的光标仍应保留在以前的应用程序(记事本,单词等)上。
我尝试使用,MainView.ShowActivated="False"但是没有用。我需要使用此处提到的HwndSource 还是什么?
我在肯特的帮助下使用过的代码(仅在最小化Window的情况下才起作用):
IntPtr HWND_TOPMOST = new IntPtr(-1);
const short SWP_NOMOVE = 0X2;
const short SWP_NOSIZE = 1;
const short SWP_NOZORDER = 0X4;
const int SWP_SHOWWINDOW = 0x0040;
Process[] processes = Process.GetProcesses(".");
foreach (var process in processes)
{
IntPtr handle = process.MainWindowHandle;
if (handle != IntPtr.Zero)
{
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
}
}
Run Code Online (Sandbox Code Playgroud) 我的要求是我想在点击button1时在button2上设置闪烁效果.我确实引用了这个例子来对文本块进行闪烁效果.
但它不适用于我的button2.如果你愿意,我可以告诉你xaml代码.请帮助我.谢谢.
我正在尝试创建一个 powershell 脚本来在 2 个 azure SQL 数据库之间创建 azure 数据同步。我的会员数据库位于另一个订阅上。
我需要设置 -DefaultProfile,其类型为“New-AzSqlSyncMember”命令。我不知道设置此参数的语法。
我当前没有 -DefaultProfile 的脚本如下所示:
New-AzSqlSyncMember -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-SyncGroupName $syncGroupName `
-Name $syncMemberName `
-MemberDatabaseType $memberDatabaseType `
-SyncDirection $syncDirection
Run Code Online (Sandbox Code Playgroud)
我想使用 powershell 设置订阅字段的值,如下图所示使用 powershell:
我的要求是在具有以下情况的文本框上应用多个样式:
当我做跟随它给我错误,我不能将DynamicResource应用于BasedOn:
<TextBox.Style>
<Style BasedOn="{DynamicResource MyTextStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding SelectedCall.Name}" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedCall.Name}" Value="N/A">
<Setter Property="Text" Value="" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
Run Code Online (Sandbox Code Playgroud)
请建议我一些解决方案,以便我可以应用此Dynamicresource以及我的数据触发器样式
我只想在字符串中的任何地方包含数字和/或"h"或"H"字符时验证字符串.
例如
123 - 有效
123h - 有效
1h23 - 有效
h234 - 有效
123H - 有效
asdf - 无效
123d - 无效
我能够仅限数字字符串,但不能满足h的额外要求.我怎样才能做到这一点?
我有一个带有Image的按钮,如下所示:
<Button Width="22" Height="22" Command="{Binding PreviousCommand}">
<Button.Template>
<ControlTemplate>
<Image Source="C:\Users\abcdef\Desktop\Slide-To-Left-Arrow-24.png"></Image>
</ControlTemplate>
</Button.Template>
<Button.InputBindings>
<KeyBinding Key="Up" Command="{Binding PreviousCommand}" Modifiers="Alt+Shift" />
</Button.InputBindings>
</Button>
Run Code Online (Sandbox Code Playgroud)
我想应用一些鼠标悬停效果来识别按钮是可点击/可聚焦的.我尝试添加触发器如下,但它无法正常工作:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Black" />
</Trigger>
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)
它不起作用.我需要做什么?请帮帮我.
我正在研究WPF.我刚刚发现了这个MONO项目,所以我对MONO很新鲜.我想知道在mono上编写的程序和在.net framework 4.0上编写的程序一样快速有效.它是否像编译一样使用相同的JIT.如果没有,那么也会进行任何研究.
我有一个wpf数据网格,我在其中通过C#添加所有列和样式.
我已经应用了ColumnHeaderStyle,如下所示:
书面的二传手:
var fontSizeSetter = new Setter {Property = Control.FontSizeProperty, Value = Convert.ToDouble(font.Size)};
风格为:
var headerStyle = new Style();
headerStyle.Setters.Add(fontSetter);
headerStyle.Setters.Add(fontSizeSetter);
headerStyle.Setters.Add(fontStyleSetter);
headerStyle.Setters.Add(fontWeightSetter);
Run Code Online (Sandbox Code Playgroud)将它应用于我的Datagrid'sColumnHeaderStyle:
view.DataGrid.ColumnHeaderStyle = headerStyle;
当前问题:现在,当我设置FontFamily和FontStyle时,它会被应用.但列标题文本大小保持不变.它没有得到更新.

整个方法:
private static void ConfigureFontsForDataGrid(Views.StatusMonitor view, StatusMonitorAgencyFontType font)
{
var fontfamily = new FontFamily(font.Font);
var fontSetter = new Setter { Property = Control.FontFamilyProperty, Value = fontfamily };
var fontSizeSetter = new Setter { Property = Control.FontSizeProperty, Value = Convert.ToDouble(font.Size) };
var fontStyleSetter = …Run Code Online (Sandbox Code Playgroud)