问题列表 - 第16952页

WPF ControlTemplate:如何为TemplateBinding提供默认值?

我正在编写一个WPF控件,它是Button的子类.然后我在Themes\generic.xaml中提供了一个默认样式,它看起来像这样(简化):

<Style TargetType="{x:Type WPFControls:MyButton}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type WPFControls:MyButton}">
                <Button 
                    x:Name="PART_Button"
                    Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

我希望用户有机会更改控件的背景,但如果他没有,我想提供默认值.我该怎么做?

当我在发布的代码中执行它时,Background和BorderBrush为null(=不存在),除非用户明确指定它们(这有效地强制用户总是提供一些值),但标准的Windows控件(如Button)提供了默认的外观,仍然可以由用户定制.如何在我的控制下做到这一点?

谢谢!

Michael Morton解决方案:

您可以在样式中提供默认设置:

<Style TargetType="{x:Type TestTemplate:MyButton}">
    <Setter Property="Background" Value="Red" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TestTemplate:MyButton}">
                <Button 
                    x:Name="PART_Button"
                    IsEnabled="{TemplateBinding IsEnabled}"
                    Content="{TemplateBinding Content}"
                    Background="{TemplateBinding Background}"
                    />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

用法:

<StackPanel>
    <TestTemplate:MyButton Background="Blue">Explicitly blue</TestTemplate:MyButton>
    <TestTemplate:MyButton>Naturally red</TestTemplate:MyButton>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

wpf styles default controltemplate templatebinding

28
推荐指数
2
解决办法
2万
查看次数

在SQL Server 2008中调试存储过程

有没有办法在SQL Server 2008上调试存储过程?

我有权使用SQL Server Management Studio 2008和Visual Studio 2008(不确定是否提供此功能).

通常我使用SQL事件探查器来查找传递给存储过程的参数,但是希望能够逐步执行该过程以查看失败的位置.

这可能吗?

什么是最好的方法?(在快速找到错误的位置方面)

sql-server debugging sql-server-2008

36
推荐指数
2
解决办法
12万
查看次数

为什么getchar()不能在控制台上识别返回EOF?

我在下面有一小段代码,我正在使用PellesC运行.

当代码执行并且我在控制台中输入了几个字符时,我按下回车键.

你能解释一下为什么这printf("%ld\n", nc);条线似乎没有被执行?因为没有输出写入控制台.

#include <stdio.h>

int main(void)
{
    long nc = 0;

    while(getchar() != EOF)
    {
        ++nc;
    }

    printf("%ld\n", nc);
}
Run Code Online (Sandbox Code Playgroud)

我决定使用K&R书彻底学习C,我很尴尬地说这个相当基本的例子让我难过.

c

17
推荐指数
2
解决办法
1万
查看次数

如何在JUnit中实例化共享资源

我注意到jUnit为每个被测试的方法运行我的测试类的构造函数.这是一个例子:


public class TestTest {
    protected BigUglyResource bur;
    public TestTest(){
        bur=new BigUglyResource();
        System.out.println("TestTest()");
    }
    @Test
    public void test1(){
        System.out.printf("test1()\n");
    }

    @Test
    public void test2(){
        System.out.printf("test2()\n");
    }
    @Test
    public void test3(){
        System.out.printf("test3()\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

TestTest()
test1()
TestTest()
test2()
TestTest()
test3()

将构造函数调用到BigUglyResource太耗时,我宁愿只构建一次.我知道你可以使用@BeforeClass运行一次方法,但@BeforeClass仅用于静态方法.静态方法无法访问上面示例中的BigUglyResource类属性.除了构建Singleton之外,还有哪些选择?

java junit

2
推荐指数
1
解决办法
1103
查看次数

重新设计默认的 asmx 配色方案

当您使用 .NET 2.0(或 3.5)创建 Web 服务时,它会为您生成一个 .asmx 文件。当这个 .asmx 在 Web 浏览器中呈现时,它会在顶部显示一个深蓝色边框以及 Web 服务的名称,如下所示: 网络服务截图

是否可以重新设计此页面的样式?我需要更改深蓝色以匹配客户的颜色。对我来说似乎毫无意义,但这就是客户想要的:-|

asp.net asmx

5
推荐指数
1
解决办法
874
查看次数

JMeter与Windows身份验证?

我正在使用JMeter加载测试驻留在SharePoint 2007站点中的一些页面.包含页面的服务器场位于与运行测试的计算机不同的域中,并使用Windows身份验证.与服务器的连接是通过未加密(非SSL)连接进行的.因此,我需要将登录凭据传递给服务器.

如何使用Windows身份验证配置JMeter以登录服务器?

sharepoint jmeter windows-authentication

5
推荐指数
2
解决办法
1万
查看次数

Python HTML抓取

这不是真的在刮,我只是想在网页中找到具有特定值的网址.例如:

<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">
Run Code Online (Sandbox Code Playgroud)

我想获得href值.关于如何做到这一点的任何想法?也许正则表达式?你能发布一些示例代码吗?我猜html抓取libs,比如BeautifulSoup,对于这个来说有点矫枉过正......

非常感谢!

html python regex screen-scraping html-content-extraction

3
推荐指数
2
解决办法
3794
查看次数

C++,一种"不可能"的行为

如果你已经编程了一段时间,那么你可能会注意到一些完全不可能的事情时不时发生,你确信没有可能的解释("这是一个编译器BUG !!").在你发现它是由什么造成的,虽然你像"oooohhh".

嗯,它恰巧发生在我身上:(

这里AuthDb 不是 NULL,而是一个有效的指针:

SingleResult sr(AuthDb, format("SELECT Id, Access, Flags, SessionKey, RealmSplitPreference FROM accounts WHERE Name = '%s'") % Escaped(account_name));
Run Code Online (Sandbox Code Playgroud)

在这里它神秘地变为NULL:

struct SingleResult : public BaseResult
{
    SingleResult(Database *db, const boost::format& query)  { _ExecuteQuery(db, query.str()); }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这是下一个电话.两个屏幕截图可以解释得更好:http: //img187.imageshack.us/img187/5757/ss1zm.png
http://img513.imageshack.us/img513/5610/ss2b.png

编辑:AuthDb是一个全局变量.它本身一直指向正确的事物; 但是ptr Database*db的副本指向NULL.


ASM代码(遗憾的是我甚至不知道如何阅读它:/)

第一个截图

01214E06  mov         eax,dword ptr [ebp-328h] 
01214E0C  push        eax  
01214E0D  push        offset string "SELECT Id, Access, Flags, Sessio"... (13C6278h) 
01214E12  lea         ecx,[ebp-150h] 
01214E18  call        boost::basic_format<char,std::char_traits<char>,std::allocator<char> >::basic_format<char,std::char_traits<char>,std::allocator<char> > (11A3260h) 
01214E1D  mov         dword ptr …
Run Code Online (Sandbox Code Playgroud)

c++ assembly

5
推荐指数
1
解决办法
932
查看次数

std :: time(0)表现

我想知道使用std :: time(0)来种子随机数生成器的性能影响.我认为这是一个系统调用(如果不是请纠正我),这通常不是关于性能的最佳选择.假设在整个程序中多次使用std :: time(0),那么是否存在严重的性能影响?

PS我比任何事都更好奇,因为目前没有任何性能问题.

c++ performance

2
推荐指数
1
解决办法
1738
查看次数

为什么yaml在生产中无法使用?

在我的OS X开发系统上:

$ ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [universal-darwin8.0]

$ script/console
Loading development environment (Rails 2.3.4)
>> require 'yaml'
=> []
Run Code Online (Sandbox Code Playgroud)

在CentOS 5.3生产系统上:

$ script/console production
Loading production environment (Rails 2.3.4)
/opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1959:in `method_missing':NoMethodError: undefined method `define_index' for #<Class:0x2e6f7b0>
>> require 'yaml'
=> false
Run Code Online (Sandbox Code Playgroud)

关于NoMethodError我能做些什么吗?

为什么yaml将无法使用.它不是核心Ruby库的一部分吗?

ruby ruby-on-rails

3
推荐指数
1
解决办法
960
查看次数