2009-09-24 2 views
0

나는 ItemsControl을 가지고 있는데, 마녀는 Binding 후 두 아이템을 포함합니다. 제 문제는 창 영역에서 두 번째 항목이 나간 것입니다.ItemsControl에서 더 가까이에 물건 가져 오기

내 질문은 - 글꼴 크기를 줄이거 나 창 높이를 높이 지 않고 항목 텍스트를 가까이에서 가져올 수 있습니까? HTML의 패딩 및 마진과 같은 것이 있습니까? 아니면 다른 트릭일까요?

p.s - 글꼴 크기와 창 높이를 변경하면 안됩니다.

이는 모습입니다 : alt text http://img2.timg.co.il/forums/1_133961330.png

을 그리고 이것은 코드입니다 :

<UserControl x:Class="WpfApplication4.AnnouncmentsControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Height="86" Width="300"> 
<Grid> 
    <ItemsControl Name="announcmentsListBox" ItemsSource="{Binding}"> 
    </ItemsControl> 
</Grid> 

+0

TextBlock의 높이를 더 작은 값으로 변경하면 글꼴 크기와 창 높이를 유지할 수 있습니다 ... 그러나 나는 당신이 무엇을 찾고 있다고 생각하지 않습니다 : p – Zenuka

+0

제쳐두고, 여러분은'Grid' 이 XAML에서. 아무것도 추가하지 않습니다. –

+0

맞습니다. Drew, 10x foride that – Erez

답변

1

귀하의 TextBlock이 40 개 단위로 설정 높이를 가지고있다. 해당 속성을 모두 제거하면 항목이 더 자연스럽게 표시됩니다.

그래서 XAML은 더 같을 것이다 :

<Grid> 
    <ItemsControl Name="announcmentsListBox" ItemsSource="{Binding}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text="{Binding Path=Text}" /> 
        <Button /> 
       </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid> 
+0

죄송합니다. 처음에는 잘못된 코드를 게시했습니다. 지금은 진짜입니다. – Erez

+0

질문에 충분한 정보가 없으므로 더 이상 진행되지 않습니다. 예를 들어 어떤 유형의 객체가 항목 컨트롤에 바인딩됩니까? 어떤 유형의 데이터 템플리트가 선택됩니까? –

+0

안녕하세요, 항목 컨트롤에 바인딩 된 개체는 내가 작성한 클래스 목록이며 ObservableCollection에서 목록을 상속합니다. DataTemplates를 사용하지 않았습니다. – Erez

0

는 당신이 생성 된 항목을 검사 몰 시각화를 사용하도록 권합니다. Mole 4.2는 http://karlshifflett.wordpress.com/mole-for-visual-studio/

에서 다운로드 할 수 있습니다. "Mole.Visualizer.dll"을 적절한 비주얼 라이저 폴더에 복사하기 만하면됩니다.

비스타에서 개발 및 활성화 상승 보안 실행 이다하는 경우 다음 디렉토리에 두더지를 설치해야합니다.

* {VS Install path}\Common7\Packages\Debugger\Visualizers 

모든 다른 사람들이 다운로드 패키지 위의 의 압축을 풉니 다. 중 하나에 릴리스 패키지에서 파일을 복사

* My Documents\Visual Studio 2005\Visualizers {VS2005} 
* My Documents\Visual Studio 2008\Visualizers {VS2008} 

이 쉽게 접근 할 수있는 코드 어딘가에 중단 점을 설정 한 후 일부 개체의 두더지 시각화를 시작할 수 있습니다. 시각적 트리를 itemscontrol로 이동하십시오. 생성 된 TextBlock에 대한 여백 및 여백 값을 찾습니다. 또한 값이 상속되는지 로컬인지 여부를 알려줍니다.

0

패딩을 0으로 설정합니다. 또한 텍스트를 특정 레이아웃으로 강제 변환 할 수있는 유일한 방법 인 대부분의 경우 음수 여백을 설정할 수 있습니다 (Padding doesn 청구서에 맞지 않고 컨테이너 레이아웃을 변경할 수 없습니다.

또한 항목 패널 템플릿을 구현하고 각 항목의 레이아웃을 다시 정의하여 도입되는 패딩을 보완 할 수 있지만 이는 허용되어서는 안됩니다 필요한. 그러나 모든 항목에 대한 레이아웃 계산을 제어 할 수 있으므로 각 항목을 가장 잘 맞출 수 있으며 (심지어 한 단계 더 나아가 여러 가지 RTM 이전에 데모 된 캐 러셀과 같은 미친 새 항목 레이아웃을 구현할 수도 있습니다. WPF/Avalon의 비디오)

희망은 그것이 내가하는 일입니다.

+0

필요하다고 언급 할만한 가치가 있다고 생각합니다. 네거티브 패딩을 적절히 강제 변환하기위한 항목 템플릿을 구현합니다. 또는 부모님에 대한 설정을 적용 할 수 있습니다. 그러나 내 경험에 의하면 이것이 미래에 다시해야한다는 바람입니다. 목록 항목을 표시하는 올바른 방법은 기본 룩앤필이 적절하지 않다고 가정하고 템플릿을 템플릿으로 만드는 것입니다 (또는 사용자의 경우 바람직하지 않은 것으로 보입니다). –

관련 문제