我有一个关于如何优雅地覆盖控件的可视树内的任意元素的问题.我也试图用几种不同的方式解决它,但我遇到了几个问题.通常当我尝试三条不同的路径并且每一路都失败时,我会下楼去喝咖啡,并问一个比我更聪明的人.所以我在这里.
具体细节:
我想要展平组合框的风格,这样它就不会引起人们的注意.我希望它类似于Windows.Forms.ComboBox的FlatStyle我希望它在Windows 7和XP上看起来一样.
主要是,我想改变ComboBox的ToggleButton的外观.
我可以使用Blend并撕掉控件模板的内部并手动更改它们.这对我来说听起来不是很开心.
我尝试使用样式来覆盖ToggleButton的背景,但事实证明整个ComboBox控件实际上是ToggleButton的前端.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ComboBoxExpiriment2.MainWindow"
x:Name="Window"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="204" Height="103">
<Grid x:Name="LayoutRoot">
<ComboBox HorizontalAlignment="Left" Margin="32,26.723,0,0" Width="120" VerticalAlignment="Top" Height="21.277">
<ComboBox.Style>
<Style>
<Setter Property="ToggleButton.Background" Value="Green" />
</Style>
</ComboBox.Style>
</ComboBox>
</Grid>
Run Code Online (Sandbox Code Playgroud)
所以我放弃并使用Blend将其撕掉.我发现它实际上是一个名为ComboBoxTransparentButtonStyle的Style,目标类型为ToggleButton.该样式设置一个ControlTemplate,它使用一个DockPanel,其右侧设置了"Microsoft_Windows_Themes:ClassicBorderDecorator"类型,这就是我们实际想要控制的内容.(到目前为止你和我在一起吗?)
这是照片:

<Style x:Key="ComboBoxTransparentButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="MinWidth" Value="0"/>
<Setter Property="MinHeight" Value="0"/>
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="{x:Static Microsoft_Windows_Themes:ClassicBorderDecorator.ClassicBorderBrush}"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<DockPanel SnapsToDevicePixels="true" Background="{TemplateBinding Background}" LastChildFill="false">
<Microsoft_Windows_Themes:ClassicBorderDecorator x:Name="Border" Width="{DynamicResource …Run Code Online (Sandbox Code Playgroud) 我有一个JS日期,由Dojo转换为RFC822格式.函数调用--dojo.date.toRfc3339(jsDate)生成以下日期 - 2007-02-26T20:15:00 + 02:00.
我有一个应用程序使用Java日期SimpleDateFormat来解析上面生成的日期.由于时区,我在解析此日期格式时遇到问题.我试图使用
YYYY-MM-DD'T'hh:MM:SSZ
这失败了,因为时区的'Z'不期望':'字符.有谁知道如何指定一个模式来处理带有':'的RFC822日期?
修订:
感谢您正确解释我想要做的事情:)我想说的是日期是在RFC3339中生成的,我需要RFC822.看起来我将不得不重写JavaScript.我希望我不必这样做,并且可以指定日期格式模式而不必修改任何Java代码,因为日期格式只是注入到应用程序的Spring bean中.
只是为了完整性,有没有办法在日期格式表达式中指定忽略序列中的字符(不进行字符串操作/替换)?在这种情况下,我会说忽略任何':'或者只是忽略所有时区?
我想在单击一个单元格时找到datagrid列标题.我使用了以下代码
private void grid1_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) &&
!(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridColumnHeader)
{
DataGridColumnHeader columnHeader = dep as DataGridColumnHeader;
if (columnHeader.ToString() == "Adv Comments")
{
MessageBox.Show(columnHeader.Column.Header.ToString());
}
}
if (dep is DataGridCell)
{
DataGridCell cell = dep as DataGridCell;
}
}
Run Code Online (Sandbox Code Playgroud)
但是列标题不是datagrid单元格的直接父级,因此无法找到它.还有其他出路吗?
这是我的chrome javascript控制台的屏幕截图,展示了我的困境.

我真的不明白为什么我不能取"值"属性."class"属性工作正常,所以我认为应该适用于"value".我正在我的应用程序中测试的代码(coffeescript)如下所示:
$ ->
$(".comment").click ->
alert $(this).attr 'value'
Run Code Online (Sandbox Code Playgroud)
这个图片中显示的这个代码和代码都不起作用.
有谁知道我做错了什么或我应该做什么?提前致谢!
我正在NetBeans中开发一个CakePHP应用程序,最终设法将它连接到XAMPP调试会话(PHP 5.3.1 w/Xdebug v2.0.6-dev).
它在启动时非常有效,它会在第一行暂停应用程序.
但是我设置的任何进一步断点都被完全忽略了.它不会破裂也不会停顿; 它只是运行完成.
xdebug.extended_info设置为1,我尝试使用赤脚php项目,没有任何框架魔法,并且breakepoints按预期工作.
什么情况?我希望能够在(Cake)PHP中使用断点.
我相信Wordpress会将多个帖子条目存储为"修订版",但我认为对空间的使用非常低效?
有没有更好的办法?我认为gitit是一个使用GIT进行版本控制的Wiki,但它是如何完成的?例如.我的应用程序是在PHP中,我必须让它与GIT交谈以提交和检索数据?
那么,在Web应用程序中实现版本控制的好方法是什么(例如在博客中它可能是帖子内容)