我有一个运行长数据库任务的后台工作程序.我想在任务运行时显示进度条.不知何故,后台工作人员不会报告任务的进度.
这就是我所拥有的:
BackgroundWorker _bgwLoadClients;
_bgwLoadClients = new BackgroundWorker();
_bgwLoadClients.WorkerReportsProgress = true;
_bgwLoadClients.DoWork += new DoWorkEventHandler(_bgwLoadClients_DoWork);
_bgwLoadClients.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_bgwLoadClients_RunWorkerCompleted);
_bgwLoadClients.ProgressChanged += new ProgressChangedEventHandler(_bgwLoadClients_ProgressChanged);
_bgwLoadClients.RunWorkerAsync(parms);
private void _bgwLoadClients_DoWork(object sender, DoWorkEventArgs e)
{
DataTable dt = getdate();
e.Result = dt;
}
void _bgwLoadClients_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
Run Code Online (Sandbox Code Playgroud)
我在WPF中这样做,但我想它不会有所作为.
提前致谢
任何人都可以想到一个很好的解释,因为对话的结果是WPF中可以为空的bool吗?这一直困扰着我.在WinForms中它是一个枚举类型,这对我来说更有意义.
我正在尝试购物车的内容ItemsControl(ListBox).为此,我创建了以下内容DataTemplate:
<DataTemplate x:Key="Templates.ShoppingCartProduct"
DataType="{x:Type viewModel:ProductViewModel}">
<DockPanel HorizontalAlignment="Stretch">
<TextBlock DockPanel.Dock="Left"
Text="{Binding Path=Name}"
FontSize="10"
Foreground="Black" />
<TextBlock DockPanel.Dock="Right"
Text="{Binding Path=Price, StringFormat=\{0:C\}}"
FontSize="10"
Foreground="Black" />
</DockPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
然而,当物品显示在我的购物车中时,名称和价格TextBlocks正好位于彼此旁边,并且右侧有非常大量的空白.
想知道什么是强迫DockPanel伸展以填充所有可用空间的最佳方法ListItem?
我在一台客户机器上销售一个WPF应用程序(几百个),整个应用程序窗口是黑色的,任何人都知道发生了什么?
该机器运行的是带有.net 3.5SP1的Windows XP,图形适配器是带有两个显示器的GeForce 6200(禁用一个显示器无法解决问题).
将"兼容性设置"设置为"256色"可以解决问题(但这不是一个可行的解决方案,我需要更多的颜色让应用看起来不错).
该应用程序是yaTimer(http://www.nbdtech.com/yaTimer/),它具有基于本文所述技术的自定义窗口镶边http://blogs.msdn.com/wpfsdk/archive/2008/09/ 08/custom-window-chrome-in-wpf.aspx在"Office 2007 without Aero"部分中.
如果有人能给我一个关于发生了什么的线索,我将非常感激.
谢谢.
在WPF应用程序中,我想构建一个"在文件中查找"输出窗格,在该窗格中我可以流式传输大量文本,而无需在每行重新分配内存,就像TextBox那样做.
WPF TextBox有一个Text属性,用于存储连续的字符串.每次,我想添加内容,我需要做textBox.Text += "New Text",这是不好的.
理想情况下,该控制将是虚拟的,只需要最少的资源,仅用于可见线.
我想过使用一个标准的ListBox有VirtualizingStackPanel,但它不允许跨行文本选择.
(在添加的每个新行中,我希望控件更新)
有什么建议吗?
我正在创建一个从切换按钮扩展的简单自定义控件,允许用户直接在XAML中指定已检查和未检查的内容.它运行良好,但它基于一个触发器,我不知道如何定义触发器,除了一个样式.如果我定义样式,那么我将失去在自定义控件之外设置的任何内容.
我希望能够做的只是将此触发器附加到控件上其他位置设置的任何现有样式.
这是样式/触发器的XAML.
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource Self}, Path=UncheckedContent}" />
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content"
Value="{Binding RelativeSource={RelativeSource Self}, Path=CheckedContent}" />
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
Run Code Online (Sandbox Code Playgroud)
我尝试使用默认类型通过BasedOn继承样式,但如果自定义控件具有由其父级设置的显式样式,则它将无法工作.我也考虑过EventTriggers,但我不相信会有一个事件来初始化控件.
感谢任何人都能提供的帮助.:)
我试图在不使用转换器的情况下将TextBlock的Text属性(这是从数据库中提取的字符串)包装在引号中; 我在今天之前从未尝试过Binding的StringFormat属性,而且我似乎做错了什么.
这是不起作用的代码:
<TextBlock Text="{Binding QuoteText, StringFormat='\"{0}\"'}" />
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在开发一个WPF项目,我已经过度CheckBox控制了一些特殊操作.这是正常的.
我的问题是ControlTemplate从主题中应用的(来自codeplex的shinyred.xaml)不适用于我的过度控制.有没有办法继承CheckBox ControlTemplate我的新控件使用?
我能找到的所有样本都专注于继承风格CheckBox,但没有关于ControlTemplate.
我ToggleButton在WPF窗口中使用a :
<ToggleButton Height="37"
HorizontalAlignment="Left"
Margin="485.738,254.419,0,0"
VerticalAlignment="Top"
Width="109"
IsEnabled="True"
Checked="toggleAPDTimeoutErr_Checked"
Unchecked="toggleAPDTimeoutErr_Unchecked">Timeout</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
我有两个正在监视的事件,但这是在处理程序后面的两个不同代码中完成的.怎么能只用一个呢?
我会有很多ToggleButton,代码可以变大.
wpf ×10
c# ×3
.net ×2
api-design ×1
autosize ×1
binding ×1
dialogresult ×1
dockpanel ×1
events ×1
menu ×1
multiline ×1
progress ×1
styles ×1
textbox ×1
togglebutton ×1
triggers ×1
window ×1
wpf-controls ×1