我需要在资源字典后面添加代码,如本问题所述.(我知道这不是一个好习惯,但它应该基于链接问题的评论工作.)我用x:Class属性引用代码:
XAML(单独的资源字典文件):
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyNamespace.MyStandardResources">
...
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
码:
using System.Windows;
namespace MyNamespace
{
public partial class MyStandardResources : ResourceDictionary
{
public MyStandardResources()
{
InitializeComponent();
}
//...
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致运行时解析器异常:
分析器内部错误:对象编写器 ' xClassNotDerivedFromElement '.System.Windows.Application.LoadComponent中的[Line:xxx Position:xxx].
资源包含在带有ResourceDictionary.MergedDictionaries标记的App.xaml中.
我想在WPF中单击一个Button时添加一个弹出窗口.我不想在我的XAML中添加Popup代码.它必须是代码背后的代码.
我的XAML如下::
<Window x:Class="Test.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Button x:Name="button1" Click="button1_Click">Button</Button>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我的XAML文件有一个简单的按钮.单击按钮,我试图执行以下代码.
private void button1_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
Popup codePopup = new Popup();
TextBlock popupText = new TextBlock();
popupText.Text = "Popup Text";
popupText.Background = Brushes.LightBlue;
popupText.Foreground = Brushes.Blue;
codePopup.Child = popupText;
codePopup.PlacementTarget = button;
codePopup.IsOpen = true;
}
Run Code Online (Sandbox Code Playgroud)
但是为什么弹出窗口没有附加到窗口.我的意思是即使我切换窗口也会显示弹出窗口.另外,当我调整窗口大小时,Popup不再放在按钮附近?
我在FormView控件中有一个复选框和一个面板,我需要从后面的代码中访问它们,以便使用复选框来确定面板是否可见.这是我最初使用的代码,但由于我将控件放在FormView中,它不再有效.
Protected Sub checkGenEd_CheckedChanged(ByVal sender As Object, _
ByVal e As System.EventArgs)
If checkGenEd.Checked = True Then
panelOutcome.Visible = True
Else
panelOutcome.Visible = False
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我已经开始根据我在这里查看的其他问题来解决这个问题,但是所有问题都是在C#而不是VB中,所以这就是我所得到的:
Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
If FormView1.CurrentMode = FormViewMode.Edit Then
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
所以,是的,我不确定如何完成它.对不起,这可能是非常基本的,但我是新来的,任何帮助都将不胜感激!
编辑:这是我现在的代码:
Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
If FormView1.CurrentMode = FormViewMode.Edit Then
CheckBox checkGenEd = formview1.FindControl("checkGenEd");
Panel panelOutcome = formview1.FindControl("panelOutcome");
End If
End …Run Code Online (Sandbox Code Playgroud) 我喜欢Monkey修补ASPX网站,以便我可以在编译的程序集中添加内容到Page_Load方法.
我的第一个想法是将包含第二个Page_Load方法的脚本标记添加到ASPX文件中,如下所示:
<script language="CS" runat="server">
void Page_Load(object sender, System.EventArgs e)
{
// do some stuff in addition to the original Page_Load method
}
</script>
Run Code Online (Sandbox Code Playgroud)
但看起来只有内联代码中的Page_Load方法才会被执行,而不是原始代码隐藏文件中的那个(在编译的程序集中).
是否可以从我的内联代码中调用原始方法?或者是否有任何其他方法来添加应该在内联代码中调用Page_Load方法后直接运行而不修改现有程序集的内容?
如何设置代码背后的百分比宽度?我能想到的唯一选择是获取父宽度并按percent.ie计算TableRow.Width = Table.Width.Value * 25/100(设置表格行的宽度等于表格宽度的25%).但是,最终,如何设置表格宽度百分比?如果没有表宽度,则子控件无法使用其父宽度进行计算.
我只是觉得我已经知道WPF和XAML语法是如何工作的...... wrooong.
我收到了消息:
'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints.
Run Code Online (Sandbox Code Playgroud)
请问,你知道为什么这个语法错了吗?
我需要将单个值用作double.它稍后在代码隐藏中使用故事板.
问候

我只想用一个位置和大小的故事板为红色矩形设置动画.也许XAML无论如何都是正确的解决方案?

我在我的ABC.ASPX页面上拖放一个Label控件.它正确编译.但是,Label2在代码隐藏ABC.ASPX.cs中,control()不可用于值赋值.
分辨率是多少?
<%@ Page language="c#" CodeBehind="ABC.aspx.cs" AutoEventWireup="false" %>
<asp:Label ID="Label2" runat="server" Font-Bold="True"></asp:Label>
Run Code Online (Sandbox Code Playgroud) 我想绑定到ObservableCollectionXAML中,并在那里应用分组.原则上,这很好.
<UserControl.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding Path=TestTemplates}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Title"/>
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="TestCategory"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
然后数据绑定表达式ItemsSource="{Binding Source={StaticResource ResourceKey=cvs}}"代替ItemsSource="{Binding Path=TestTemplates}".
起初,一切看起来都很酷,直到我想从视图模型中刷新UI.问题是,CollectionViewSource.GetDefaultView(TestTemplates)返回的视图与应用分组的XAML中的视图不同.因此,我无法设置选择或做任何有用的事情.
我可以通过将列表再次直接绑定到视图模型的属性并在代码隐藏中设置分组来修复它.但我对这个解决方案并不满意.
private void UserControlLoaded(object sender, RoutedEventArgs e)
{
IEnumerable source = TemplateList.ItemsSource;
var cvs = (CollectionView)CollectionViewSource.GetDefaultView(source);
if (cvs != null)
{
cvs.SortDescriptions.Add(new SortDescription("Title", ListSortDirection.Ascending));
cvs.GroupDescriptions.Add(new PropertyGroupDescription("TestCategory"));
}
}
Run Code Online (Sandbox Code Playgroud)
我认为,其原因已由John Skeet在此提供.
尽管如此,我希望应该有一种方法来获得正确的观点.我错了吗?
我正在使用Microsoft Visual Studio 2010 Professional并开发asp.net/C#应用程序.在调试模式下,我可以在"Locals"选项卡下看到局部变量,还有一个名为"this"的东西,它扩展为多个树结构.但是,我无法在任何地方找到我的会话变量名称/值对.
一个朋友建议我使用"立即窗口"选项卡,然后输入我的会话变量(即,会话["someValue中"],然后按回车的名称.这确实给我的Session变量的值.这是一个很简单单个会话变量,但在处理多个变量时,它变得有点麻烦.
反正我是否可以浏览到存储所有会话变量的键/值对的部分,就像我可以用于局部变量一样?
c# debugging session-variables code-behind visual-studio-2010
我正在使用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应用程序中是否运行良好?
code-behind ×10
asp.net ×5
c# ×4
wpf ×3
.net ×2
xaml ×2
button ×1
controls ×1
debugging ×1
formview ×1
inline-code ×1
popup ×1
silverlight ×1
storyboard ×1
thickness ×1
vb.net ×1
webforms ×1