标签: code-behind

如何在代码后面访问附加属性?

我的XAML中有一个矩形,并希望Canvas.Left在后面的代码中更改其属性:

<UserControl x:Class="Second90.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300" KeyDown="txt_KeyDown">
    <Canvas>
        <Rectangle 
            Name="theObject" 
            Canvas.Top="20" 
            Canvas.Left="20" 
            Width="10" 
            Height="10" 
            Fill="Gray"/>
    </Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

private void txt_KeyDown(object sender, KeyEventArgs e)
{
    theObject.Canvas.Left = 50;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的语法是什么?

c# wpf code-behind attached-properties

94
推荐指数
3
解决办法
5万
查看次数

"controlname"名称在当前上下文中不存在

我有一个我正在使用的Web应用程序(带有C#的ASP.NET2.0,使用VS2005).一切都很好,突然间我得到了错误:

Error 1 The name 'Label1' does not exist in the current context

每次我在页面的代码隐藏中使用控件时,还有43个其他类型的.

这只发生在1页.就好像代码隐藏不能识别控件一样.另一件有趣的事情是intellisense没有拿起任何控件.

我试图清理解决方案文件,删除obj文件,从项目中排除文件然后重新添加它们,关闭VS并重新启动它,甚至重新启动我的计算机,但这些都没有用.

c# asp.net visual-studio-2005 code-behind

73
推荐指数
4
解决办法
23万
查看次数

没有代码的ASP.net页面

我有一个后面有C#代码的ASP.Net页面.

但是,我被要求不使用代码 - 因此在SharePoint中部署更容易.

有没有办法在ASP.Net页面中包含C#代码,而不使用单独的代码隐藏文件?

.net c# asp.net sharepoint code-behind

62
推荐指数
5
解决办法
12万
查看次数

通过WPF中的代码隐藏访问资源

我在我的窗口资源中定义了一个自定义集合,如下所示(在Sketchflow应用程序中,因此窗口实际上是一个UserControl):

<UserControl.Resources>
    <ds:MyCollection x:Key="myKey" x:Name="myName" />
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

我希望能够在代码隐藏中引用这个集合,我期望它是由x:Name,但我似乎无法访问它.

我可以使用它来获取它的引用

myRef = (MyCollection) this.FindName("myKey");
Run Code Online (Sandbox Code Playgroud)

但这似乎是hackish.这是不好的做法,还有什么会更好?谢谢 :)

c# wpf resources xaml code-behind

62
推荐指数
5
解决办法
9万
查看次数

如何在代码中分配动态资源样式?

我想在代码中生成相当于XAML中的这个:

<TextBlock
Text="Title:"
Width="{Binding FormLabelColumnWidth}"
Style="{DynamicResource FormLabelStyle}"/>
Run Code Online (Sandbox Code Playgroud)

我可以做文本和宽度,但是如何将动态资源分配给样式:

TextBlock tb = new TextBlock();
            tb.Text = "Title:";
            tb.Width = FormLabelColumnWidth;
            tb.Style = ???
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml styles code-behind

54
推荐指数
3
解决办法
5万
查看次数

通过后面的aspx代码添加css类

我正在使用aspx.如果我有HTML如下:

<div id="classMe"></div>
Run Code Online (Sandbox Code Playgroud)

我希望通过代码隐藏文件动态添加一个css类,即在Page_Load上.可能吗?

css asp.net class code-behind

54
推荐指数
3
解决办法
13万
查看次数

为什么要避免WPF MVVM模式中的代码隐藏?

在文章中,使用Model-View-ViewModel设计模式的WPF应用程序,Josh Smith的作者说:

(1)在设计良好的MVVM体系结构中,大多数视图的代码隐藏应该是空的,或者最多只包含操作该视图中包含的控件和资源的代码.(2)有时还需要在与ViewModel对象交互的View的代码隐藏中编写代码,例如挂钩事件或调用一个本来很难从ViewModel本身调用的方法.

我的问题是,在(1),为什么空代码被认为是一个设计良好的MVVM.(听起来空的代码隐藏总是很好.)

编辑:我的问题是,如下,为什么像的方法AttachedCommandBehavior或者InvokeCommandAction是试图避免代码隐藏编码.

让我解释一下细节.

就(1)而言,我会认为以下情况来自AttachedCommandBehavior.由于Border没有实现ICommandSourcefor MouseRightButtonDown,你不能通常绑定事件和ICommand,但可以使用AttachedCommandBehavior.

<!-- I modified some code from the AttachedCommandBehavior to show more simply -->
<Border>
    <local:CommandBehaviorCollection.Behaviors>
           <local:BehaviorBinding Event="MouseRightButtonDown" 
                  Command="{Binding SomeCommand}" 
                  CommandParameter="A Command on MouseRightButtonDown"/>
    </local:CommandBehaviorCollection.Behaviors>
</Border>
Run Code Online (Sandbox Code Playgroud)

要么

我们可以这样做System.Windows.Interactivity.InvokeCommandAction.

<Border xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" >
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseRightButtonDown">
            <i:InvokeCommandAction Command="{Binding SomeCommand}" 
               CommandParameter="A Command on MouseRightButtonDown"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Border>
Run Code Online (Sandbox Code Playgroud)

但,

我们使用以下XAML及其代码隐藏Border_MouseRightButtonDown方法,该方法与上述(2)Josh Simth相关联.

<Border MouseRightButtonDown ="Border_MouseRightButtonDown"/>
Run Code Online (Sandbox Code Playgroud)

我认为使用上面的代码隐藏并不坏,只是因为它们之间的区别只是绑定命令或添加事件处理程序.

你怎么看待这件事?

xaml code-behind mvvm

47
推荐指数
3
解决办法
3万
查看次数

如何从内容页面访问母版页控件

我有一个母版页,其中包含状态消息的标签.我需要从不同的.aspx页面设置状态文本.如何从内容页面完成?

public partial class Site : System.Web.UI.MasterPage
{
    public string StatusNachricht
    {
        get
        {
            return lblStatus.Text;
        }
        set
        {
            lblStatus.Text = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {            

    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这个,但是没有成功使它工作:

public partial class DatenAendern : System.Web.UI.Page
{
    var master = Master as Site;

    protected void Page_Load(object sender, EventArgs e)
    {               
        if (master != null)
        {
            master.setStatusLabel("");
        }
    }        

    protected void grdBenutzer_RowCommand(object sender, GridViewCommandEventArgs e)
    {           
            try
            {
                //some code

                if (master != null)
                {
                    master.setStatusLabel("Passwort erfolgreich …
Run Code Online (Sandbox Code Playgroud)

asp.net master-pages code-behind

47
推荐指数
3
解决办法
13万
查看次数

XAML或C#代码隐藏

我不喜欢使用XAML.我更喜欢用C#编写所有代码,但我认为我做错了.

在哪些情况下,最好使用XAML,何时使用C#?你有什么经历?

c# wpf xaml code-behind

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

如何从代码隐藏中访问控件模板的元素

我正在尝试访问内容控件的控件模板内的用户控件.特别:

  <ContentControl x:Name="MyList" >
        <ContentControl.Template>
            <ControlTemplate x:Name="MyControlTemplate">
                <Border RenderTransformOrigin="0,0" x:Name="border">
                    <UserControls:MyControl x:Name="MyControlName" Width="100" ViewModel="{Binding}" />
Run Code Online (Sandbox Code Playgroud)

我可以访问this.MyList,但它说明了找不到.MyControlName.在这种情况下如何从代码隐藏中访问MyControlName对象?

谢谢!

syntax wpf user-controls code-behind

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