标签: code-behind

从没有密钥的代码创建XAML资源

有没有办法从代码中向ResourceDictionary添加资源而不给它一个资源键?

例如,我在XAML中有这个资源:

<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type xbap:FieldPropertyInfo}"
        ItemsSource="{Binding Path=Value.Values}">
            <TextBlock Text="{Binding Path=Name}" />
    <HierarchicalDataTemplate>
</TreeView.Resources>
Run Code Online (Sandbox Code Playgroud)

我需要从代码动态创建此资源并将其添加到TreeView ResourceDictionary.但是,在没有Key的XAML中,默认情况下,它用于所有FieldPropertyInfo类型.有没有办法在没有密钥的情况下将它添加到代码中的资源,或者有没有办法可以使用密钥并且仍然在所有FieldPropertyInfo类型上使用它?

这是我到目前为止在C#中所做的事情:

HierarchicalDataTemplate fieldPropertyTemplate = new HierarchicalDataTemplate("FieldProperyInfo");

fieldPropertyTemplate.ItemsSource = new Binding("Value.Values");

this.Resources.Add(null, fieldPropertyTemplate);
Run Code Online (Sandbox Code Playgroud)

显然,将资源添加到ResourceDictionary,键null不起作用.

c# wpf xaml code-behind

7
推荐指数
1
解决办法
3025
查看次数

将单个文件aspx转换为代码隐藏

我正在使用VS 2008 .Net 3.5中的网站(不是Web应用程序),它使用单个文件.aspx模型,其中服务器代码包含在html的头部而不是使用.aspx.cs代码页面背后.

我想快速转换文件以使用代码隐藏模型,但到目前为止,我能做到这一点的唯一方法是删除文件,创建一个新的,代码隐藏的同名aspx页面,然后手动复制在.aspx页面的aspx相关代码和.aspx.cs页面的服务器代码中.

有更快的方法吗?

我看过两篇似乎回答这个问题的文章,但不幸的是没有: 在Visual Studio .NET中使用单文件Web窗体页面以及 如何将aspx或母版页文件转换为页面和代码?

两者都提供了一个简单的解决方案,VS使腿部工作,你只需将它指向文件并拍摄.无论出于何种原因,他们都没有工作.第一篇文章似乎是指VS 2002,第二篇似乎是指Web应用程序.

网站有什么希望吗?

另外,也许我看错的方式,单页模型有优势吗?我计划很快将整个网站转换为Web应用程序,单页模型在Web应用程序中是否运行良好?

asp.net code-behind visual-studio-2008

7
推荐指数
1
解决办法
9769
查看次数

获取VS2008到"树缩进"的部分类(如代码隐藏文件)

我已经创建了一个多平台项目,除了一件小事之外,一切都很顺利.当我添加特定的平台文件时,例如:

  • ServiceImpl.cs
  • ServiceImpl.Desktop.cs

它没有像本文中那样以树形方式很好地显示:

多目标(查看文章中的最后一张图片,了解我的意思)..

任何想法如何"教"VS 2008这样做?使用普通的XAML和Code-Behind,它可以正常工作......


好的,答案对于正常情况来说是完美的.现在,Silverlight项目仍然存在一些问题.该文件最初位于桌面项目中,因此解决方案有效.但是,如果"父"文件是一个链接,它似乎会导致问题(根本没有效果)...请参阅此代码:

<Compile Include="..\Messaging\Services\MessagingService.cs">
  <Link>Services\MessagingService.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\MessagingService.Silverlight.cs">
      <DependentUpon>MessagingService.cs</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)

对于这种情况的任何想法?

code-behind visual-studio-2008

7
推荐指数
1
解决办法
791
查看次数

7
推荐指数
1
解决办法
4937
查看次数

在代码隐藏中为类型设置默认样式

如何为代码隐藏中的类型设置默认样式,例如:

<ScaleTransform x:Key="scaler" ScaleX="1.25" ScaleY="1.25" />
<Style TargetType="{x:Type ToolTip}">
  <Setter Property="LayoutTransform" Value="{DynamicResource scaler}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

我需要在代码隐藏中而不是在xaml标记中设置工具提示的样式.

wpf styles code-behind

7
推荐指数
1
解决办法
4080
查看次数

以编程方式设置页面输出缓存VaryByCustom值

我想对我将支持的VaryByCustom参数类型使用Enum值,是否可以这样做?

我尝试在页面中设置它

<%@ OutputCache Duration="600" VaryByParam="none" 
            VaryByCustom='<%=VaryByCustomType.IsAuthenticated.ToString(); %>' %>
Run Code Online (Sandbox Code Playgroud)

但是这返回了"<%=VaryByCustomType.IsAuthenticated.ToString(); %>"我内部的整个文字字符串global.asax是否有任何方法可以在页面本身或代码隐藏中执行此操作?或者这只是我必须接受的纯粹魔术字符串而我无法为其添加类型安全性吗?

.net asp.net outputcache code-behind

7
推荐指数
1
解决办法
3617
查看次数

绑定Setter.Value代码

在XAML中我可以这样写:

<Setter Property="PropertyName" Value="{Binding ...}" />
Run Code Online (Sandbox Code Playgroud)

我将如何在代码中执行此操作?我之前在代码中构造了绑定,但我似乎无法ValuePropertySetter类上找到任何要传递给它的静态对象BindingOperations.SetBinding().

c# wpf setter binding code-behind

7
推荐指数
1
解决办法
8374
查看次数

WPF:MVVM在哪里停止并且代码隐藏开始了?

我创建了一个窗口,其中包含一个ListView显示人员集合的窗口.还有3个TextBoxes应该显示人的名字和姓氏,以及年龄.最后,有一个Button保存在这些TextBoxes中输入的新人数据.

ListView通过实现MVVM来加载人员.奇迹般有效!此外,通过单击Button也可以通过MVVM 将新人添加到集合中.

但是有两个用例,我不确定使用命令是更明智的,即MVVM,还是简单的代码隐藏.用例是:

  1. 当用户从中选择一个人时ListView,TextBoxes应显示人员详细信息.
  2. 当用户键入字符而不是TextBox显示人的年龄的数字时,应警告他或她输入的数据不正确.

我怀疑是否应该使用MVVM或代码隐藏的原因是因为两个用例都与仅视图(GUI)相关,即与模型或应用程序业务逻辑没有交互性.该ListView项目源绑定到人的集合ObservableColleciton<Person>,并与被选择的人的所有数据已经传递到当视图ListView中填充的物品.在第二个用例中,再次,没有必要转到ViewModel,以便让它触发有关错误用户输入的消息框.如何在ViewModel类的age依赖属性中创建验证回调呢?

感谢您的所有澄清.

wpf code-behind mvvm

7
推荐指数
3
解决办法
2132
查看次数

Visual Studio 2012中的页面控件和事件转到代码隐藏的位置?

我不能为我的生活弄清楚如何做一些我在VS2008和VS 2012之前做过的事情.

在创建Web应用程序时,在页面上抛出一些服务器端控件,然后转到代码隐藏,在代码编辑器的顶部有2个下拉列表.左边的那个显示页面上的页面和控件,选择其中一个说GridView,然后在右侧下拉列表中显示该控件的事件.因此,我可以双击它并创建其中一个事件,而无需记住并在代码中键入事件.

在我的VS 2012中,左边只显示页面(大帮助)而没有控件.选择该选项后,右侧下拉列表将显示控件,但选择该控件仅会加载该页面的设计器以及该控件的条目.

这是一个我没有设置的设置,或者改变的方式和原因,如何在VS2012中再次执行此操作?

c# events code-behind web-controls visual-studio-2012

7
推荐指数
1
解决办法
6339
查看次数

来自C#的警报消息

有没有其他方法可以在asp.net Web应用程序中显示来自后端的警报消息而不是这个.

ScriptManager.RegisterStartupScript(this, GetType(), "alertMessage","alert('Called from code-behind directly!');", true);
Run Code Online (Sandbox Code Playgroud)

我也包括使用System.Web.UI命名空间,但仍然使用此代码获得这两个错误:

第一个错误:

'System.Web.UI.ScriptManager.RegisterStartupScript(System.Web.UI.Page,System.Type,string,string,bool)'的最佳重载方法匹配有一些无效的参数D:\ my_backup\Demos\NewShop\NewShop\API\ProductAPIController.cs 85 17 N ewShop

第二个错误:

参数1:无法从'NewShop.API.ProductAPIController'转换为'System.Web.UI.Page'D:\ my_backup\Demos\NewShop\NewShop\API\ProductAPIController .cs 85 53 NewShop

c# asp.net asp.net-mvc scriptmanager code-behind

7
推荐指数
1
解决办法
1000
查看次数