当我第一次打开窗口时,我尝试将插入符/光标位置设置为WPF文本框中字符串值的末尾.当我的窗口打开时,我使用FocusManager在我的文本框上设置焦点.
似乎没什么用.有任何想法吗?
注意,我使用的是MVVM模式,我只从代码中包含了一部分XAML.
<Window
FocusManager.FocusedElement="{Binding ElementName=NumberOfDigits}"
Height="400" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox Grid.Column="0" Grid.Row="0"
x:Name="NumberOfDigits"
IsReadOnly="{Binding Path=IsRunning, Mode=TwoWay}"
VerticalContentAlignment="Center"
Text="{Binding Path=Digits, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button Grid.Column="0" Grid.Row="1"
Margin="10,0,10,0"
IsDefault="True"
Content="Start"
Command="{Binding StartCommand}"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个键盘快捷方式来完成为C#类中的属性创建默认访问器.
像......
我开始输入:
public int Id
Run Code Online (Sandbox Code Playgroud)
然后我按下一个或多个键,我最终得到:
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud) 好的,我已经弄清楚如何使用LayoutTransform和ScaleTransform让我的UI元素网格进行缩放.我不明白的是我如何让我的View响应CTRL + MouseWheelUp\Down来做到这一点,以及如何使代码适应MVVM模式.
我的第一个想法是将ZoomFactor存储为属性,并绑定到命令来调整它.
我看的是:
<UserControl.InputBindings>
<MouseBinding Command="{Binding ZoomGrid}" Gesture="Control+WheelClick"/>
</UserControl.InputBindings>
Run Code Online (Sandbox Code Playgroud)
但我看到2个问题:
1)我认为没有办法判断车轮是上升还是下降,我也不知道如何确定车轮的数量.我见过MouseWheelEventArgs.Delta,但不知道怎么弄它.
2)绑定到viewmodel上的命令似乎不对,因为它严格来说是View事物.
由于缩放只是严格的UI视图,我认为实际的代码应该放在代码隐藏中.
你们怎么实现这个?
ps,我使用Cinch for MVVM使用.net\wpf 4.0.
什么时候应该使用库或框架与您自己的实现.例如.MVVM,我应该使用Cinch/MVVM Framework还是滚动我自己的代码?
使用NHibernate我想过滤一个类中的集合,只包含可能对象的子集.下面我将包括一个示例表数据以帮助解释.我无法使用NHibernate找到这个.
11 "data.txt" 2
12 "info.txt" 3
Run Code Online (Sandbox Code Playgroud)
31 "Genesis" 1 11 <= Ignore this object
32 "Changed data" 2 11 <= Get this object
34 "Genesis" 1 12 <= Ignore this object
35 "Changed info" 2 12 <= Ignore this object
36 "Added info" 3 12 <= Get this object
Run Code Online (Sandbox Code Playgroud)
我想在一个命令中为每个DataObject加入非外键DataObject.CurrentVersion = DataObjectVersion.VersionNumber.
以下是类和映射文件:
public class DataObject
{
public virtual int DataObjectId { get; set; }
public virtual string Name { get; set; }
public …
Run Code Online (Sandbox Code Playgroud) System.Windows.Shapes.Shape命名空间提供对可在XAML或代码中使用的Polygon对象的访问.
是否有一个Microsoft库在Polygon类似区域或centriod上提供一些非常基本的计算?
我的偏好是不要自己重新实现这些功能或复制数学/几何库.
我可以在运行时在方法Helper()中检测到程序执行是抛出异常的结果吗?
注意,我的目标是避免扩展方法Helper()将异常对象作为输入参数.
public void MyFunc1()
{
try
{
// some code here that eventaully throws an exception
}
catch( Exception ex )
{
Helper();
}
}
public void MyFunc2()
{
Helper();
}
private void Helper()
{
// how can I check if program execution is the
// result of a thrown exception here.
}
Run Code Online (Sandbox Code Playgroud) 我继承了一些代码,它有两个非UI线程来更新各种WinForm控件.
代码使用InvokeRequired和Invoke来更新UI; 但是,我仍然偶尔得到错误:跨线程操作无效:控制'lvReports'访问除了它之外的其他线程.
我怀疑我正在处理一个竞争条件,我需要在下面的方法中引入一个锁,但是说,我可以找到几十个关于如何安全地从非UI线程更新UI但没有示例或讨论的示例如何处理在竞赛场景中更新相同控件的两个线程.
所以我的问题是:如何在给定竞争条件并且我需要从非UI线程更新UI时,如何重写下面的代码来处理更新UI?
// two separate theads call this method in a instance of a WinForm
private void LoadReports()
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(this.LoadReports));
}
else
{
// some code removed to keep exampe simple...
SetCtlVisible(lvReports, true);
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate { lvReports.Refresh(); });
}
else
{
lvReports.Refresh();
}
}
}
delegate void SetVisibleCallback(Control ctl, bool visible);
private void SetCtlVisible(Control ctl, bool visible)
{
if (ctl.InvokeRequired)
{
SetVisibleCallback d = new SetVisibleCallback(SetCtlVisible);
ctl.Invoke(d, new object[] { ctl, …
Run Code Online (Sandbox Code Playgroud) 我想在WPF中阻止标签到只读的Microsoft数据网格.我将IsTabStop设置为False,但我仍然可以选择进入数据网格.有任何想法吗?
<WpfToolkit:DataGrid
IsReadOnly="True"
IsTabStop="False"
ItemsSource="{Binding Path=GridData, Mode=OneWay}" >
</WpfToolkit:DataGrid>
Run Code Online (Sandbox Code Playgroud) 有人知道我可以将 rtf 文件加载到 wpf RichTextBox 吗?
在 Windows.Forms 我会这样做
RichTextFile.Loadfile(c:\myfile.rtf)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在 WPF 中实现相同的目标!
谢谢,
本
wpf ×6
c# ×5
cinch ×2
.net ×1
accessor ×1
caret ×1
cursor ×1
data-binding ×1
datagrid ×1
exception ×1
filter ×1
frameworks ×1
geometry ×1
invoke ×1
mouse ×1
mvvm ×1
nhibernate ×1
polygon ×1
powershell ×1
richtextbox ×1
textbox ×1
versioning ×1
winforms ×1
wpfdatagrid ×1