문제 : 부모 그리드의 몇 가지 컨트롤을 사용하여 새로 만든 UserControl을 사용하여 솔루션 전체에서 사용할 수 있습니다. 충분히 간단하게 들리는가? UserControl을 만들었고 My.Project.Controls.Tool 클래스를 호출 한 다음 다른 네임 스페이스 xmlns:Controls="clr-namespace:My.Project.Controls;assembly=My.Project.GlobalUserControlDump"
을 호출 한 다음 편리한 dandy intellisense에서 쉽게 선택하여 뷰에 설정하려고했습니다.빌드 후 사라지는 UserControl
이것은 예상대로 내 UserControl은 디자이너의 별도 뷰에 잘 나타납니다. 그래서 다음 정상적인 단계를 밟아 빌드를 완료하자마자 빌드가 완료되면 (예상대로 오류가보고되지 않고 정상적으로 작동하는 경우) 작은 놈이 사라집니다. xaml은 여전히 뷰에 있지만 디자이너로부터 사라졌으며 빌드 된 솔루션에 표시되지 않습니다.
혼란 나는 다시, UserControl을 신속하게 변경하고 다시 디자이너에 나타납니다. 좋아요, 다시 생각하기에 우연이라고 생각합니다 .... 그리고 다시 디자이너와 솔루션에서 사라집니다.
이제이 시나리오를 안정적으로 재현 할 수 있습니다. UserControl을 약간 변경하면 디자이너에 다시 나타납니다 ..... 빌드하고 다시 사라집니다!
누군가이 quandry에 약간의 빛을 비춰 줄 수 있습니까? Caliburn Micro를 사용하여 SL에서 실행 (브라우저 안팎에 있지만 브라우저로 작성). 이 수수께끼에 대한 통찰력은 물론 다른 한 쌍의 눈이 내 어리 석음을 잡기를 바라면서 크게 감사하게 생각합니다. 건배!
명확화를 위해 사용자 콘트롤에 직접 적용되는 것은 a previous question입니다. 그때 (그것은 네임 스페이스 쇼와 GlobalUserControlDump 프로젝트에 앉아 것)와 네임 스페이스가보기에 추가되면, 그것은 예상대로 인텔리에 잘 나타나 같은 뷰를 직접 호출 할 것이다
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable="d"
x:Class="My.Project.Controls.DatePicker">
<Grid Width="90">
<telerik:RadDateTimePicker
InputMode="DatePicker"
SelectedDate="{Binding SelectedDate, Mode=TwoWay}"/>
<telerik:RadMaskedDateTimeInput
IsClearButtonVisible="False"
FormatString="{}{0:M/d/yy}"
SelectionOnFocus="SelectAll"
Value="{Binding SelectedDate, Mode=TwoWay}"/>
</Grid>
</UserControl>
;
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
x:Class="My.Project.Views.RandomView"
xmlns:Controls="clr-namespace:My.Project.Controls;assembly=My.Project.GlobalUserControlDump"
mc:Ignorable="d">
<Grid>
<Controls:DatePicker />
</Grid>
</UserControl>
그런 다음 필요한 속성을 노출하고 있습니다.
namespace My
{
public partial class DatePicker : UserControl
{
public static readonly DependencyProperty SelectedDateProperty =
DependencyProperty.Register("SelectedDate", typeof(DateTime), typeof(DatePicker), new PropertyMetadata(null));
public DatePicker()
{
// Required to initialize variables
DataContext = this;
}
public DateTime SelectedDate
{
get { return (DateTime)GetValue(SelectedDateProperty); }
set { SetValue(SelectedDateProperty, value); }
}
}
}
나는 아직도 저주를 받았습니다.
- 당신이 당신의 XAML을 게시 할 수 있습니다 단지 같은 것을 배제하기 위해, 나는 Telerik 스위트를 제어 한 too – Charleh
당신은 아직 이것을 알아 냈습니까? –
UC에 대한 전체 XAML 및 UC가있는보기에 대한 일부 XAML을 게시 할 수 있습니다 ('ContentControl' 및 규칙을 사용하여 바인딩하거나 UC를보기에 직접 놓는 것입니까?) – Charleh