我们需要在代码中确定在给定特定数据类型和该元素的情况下,哪个模板将自动应用于绑定元素。
我们并不是在寻找 DataTemplateSelector,因为它用于根据自定义逻辑告诉UI 对于给定对象使用哪个模板。相反,我们询问UI对于给定的数据类型和 UI 元素将使用哪个模板。
换句话说,我们正在寻找基于窗口资源部分中定义的模板应用的任何 WPF,这些模板可以被该窗口上的控件的资源覆盖,可以通过显式设置 DataTemplate 或直接在该元素上提供 DataTemplateSelector。
另外,我们尝试了 SelectTemplate 的默认实现,但它返回 null,所以我们也不能走这条路。
测试将询问 UI 中任何位置没有定义数据模板或选择器的元素“您将如何显示该值?” 希望它会返回一个包含 TextBlock 定义的 DataTemplate,其中文本属性设置为该对象上的 ToString 方法,这是在未定义任何其他内容时默认显示的内容。
当我尝试向母版页中的 html 标记添加属性时:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" id="primtag" runat="server">
Run Code Online (Sandbox Code Playgroud)
就像后面的代码一样:
prmimaryhtml_tag.Attributes.Add("lang", "en")
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: The base class includes the field 'primtag', but its type (System.Web.UI.HtmlControls.HtmlElement) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlGenericControl).
Source Error:
Line 4:
Line 5: <!DOCTYPE …Run Code Online (Sandbox Code Playgroud) 我需要从代码隐藏访问列表视图的滚动查看器。这是我的列表视图的定义
<ListView Grid.Row="1" ItemsSource="{Binding Path=SpecList, UpdateSourceTrigger=PropertyChanged}"
Name="mylistview"
ItemTemplate="{StaticResource SpecElementTemplate}"
Background="{StaticResource EnvLayout}"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ItemContainerStyle="{StaticResource MyStyle}"
BorderBrush="Blue"
BorderThickness="20"
Margin="-2">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得滚动查看器?
谢谢
安德烈亚
当我在Visual Studio 2017中创建新的 Razor 页面时,未创建分离的代码隐藏文件。
这是突出显示的问题的屏幕截图。

我们可以看到调用的 Razor 页面List.cshtml不包含代码隐藏文件。about.cshtml例如,将其与默认页面进行对比。
在Silverlight 3的前几个小时里,作为狂热的WPF用户,我对它不支持的许多事情感到非常失望.这对我来说似乎是一个奇怪的问题,它是如此通用,我无法在网上找到任何关于它的东西.
我有以下XAML:
<controls:TabControl x:Name="workspacesTabControl" Grid.Row="1"
Background="AntiqueWhite" ItemsSource="{Binding Workspaces, ElementName=_root}"/>
Run Code Online (Sandbox Code Playgroud)
但是,我无法看到workspacesTabControl代码隐藏.我想也许IntelliSense只是意味着并试图继续编译它,但是有一个错误:
Error 1 The name 'workspacesTabControl' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)
如何在代码隐藏中访问控件?
编辑:我意识到我粘贴了错误的错误 - 我在UserControl中有两个名为workspacesTabControl和menuStrip的控件.在代码隐藏中,我无法通过他们的名字找到其中任何一个.
以防万一,这里是XAML menuStrip:
<controls:TreeView Grid.ColumnSpan="2" Height="100" x:Name="menuStrip"
ItemContainerStyle="{StaticResource MenuStripStyle}"
ItemsSource="{Binding Menu, ElementName=_root}"/>
Run Code Online (Sandbox Code Playgroud)
再次编辑:
我不确定这是否有用,但我已经看了一下InitializeComponent()代码,这就是我所看到的:
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Windows.Application.LoadComponent(this, new System.Uri("/SapphireApplication;component/SapphireMain.xaml", System.UriKind.Relative));
}
Run Code Online (Sandbox Code Playgroud)
它似乎只是在运行时(不是在编译之前或编译期间)加载XAML,因此menuStrip和workspacesTabControl名称实际上并没有在任何地方注册(因为它们通常在WPF/win表单中).该属性可能是个问题吗?我在哪里可以摆脱所有未来UserControls的这个要求?
如何通过codebehind.cs文件将IList项绑定到a ComboBox.请用简单的步骤解释.
我需要双向绑定的步骤,而不是设置ItemsSource.
我需要这样的东西:
myComboBox.SetBinding(ItemsControl.ItemsSourceProperty,
new Binding { Source = myList });
Run Code Online (Sandbox Code Playgroud)
但我SelectedItem也需要.
谢谢
我似乎遇到了一个奇怪的问题,即字符串引用没有加载更新的值.
简而言之,我已经替换了包含一堆页面标题的DLL文件(App_Code.dll)(想想HTML页面标题),但是当从其他DLL引用时,这些值没有被更新.
这是一个示例页面代码隐藏的代码片段:
this.Master.PageDescription = Constants.Titles.CardInfoPageDescription;
Run Code Online (Sandbox Code Playgroud)
Constants类被编译成App_Code.dll,我刚刚替换它.我还清除了缓存(在这种情况下是IIS 6),重新启动了计算机,并确保我的本地浏览器缓存为空.
但是,当我加载网页时,它没有加载Constants.Titles.CardInfoPageDescription的新值.这适用于所有网页.
我可以让它更新它以替换该页面的DLL的唯一方法,该页面根本没有改变...
知道为什么会这样吗?这个字符串引用是否实际上没有在运行时查找并内置到页面DLL中?
任何帮助是极大的赞赏!
谢谢,亚当
我正在尝试无缝地登录用户而不提示凭据作为<asp:Wizard>流程的一部分.我的策略是处理NextButtonClick事件并在代码中登录用户.我已经在会话变量中保存了用户的凭据.
是否可以在代码中登录用户?<asp:Login>是否需要在幕后隐藏控件?
asp.net forms-authentication asp.net-membership code-behind wizard
不幸的是,由于广泛使用"hashtag"和"httprequest"这个词,我找不到任何搜索结果,这些搜索结果让我得到了关于这样的事情是否可行的答案.
如果我有这样的网址:
/订单/产品#12345
HttpRequest类向我显示了FilePath,RawUrl以及显示url的所有其他成员
/订单/产品
它只是摆脱了标签,我找不到一个地方来查看它.
有没有办法让我能够从代码隐藏中看到URL末尾的主题标签?我知道我可以很容易地把它变成一个QueryString参数,但我喜欢它看起来更好的方式,所以如果有办法做到这一点,我想知道它是什么:)
提前致谢!
在MVVM中,我们通常有一个View(XAML +通常是空代码隐藏)以及一个单独的ViewModel.View和ViewModel之间的交互通过数据绑定进行.
假设View只是XAML并且其代码隐藏是空的(通常就是这种情况),使用代码隐藏本身作为ViewModel并将View绑定到代码隐藏的属性是否有任何问题?关注点的分离仍然存在 - 您有一个纯XAML视图和一个ViewModel,它是代码隐藏,它们只通过数据绑定相互通信.ViewModel仍然可以进行单元测试.
这听起来像是异端邪说,但是当代码隐藏实际上是空的时候,我无法想到任何可以证明必须为ViewModel创建单独类的用例.
code-behind ×10
c# ×4
wpf ×4
asp.net ×3
.net ×1
combobox ×1
data-binding ×1
datatemplate ×1
hashtag ×1
html ×1
httprequest ×1
iis-6 ×1
listview ×1
mvvm ×1
razor ×1
razor-pages ×1
scrollviewer ×1
silverlight ×1
string ×1
vb.net ×1
webforms ×1
wizard ×1
xaml ×1