2014-10-20 4 views
0

Я хочу повернуть куб с привязкой в ​​коде позади.Установить привязку в коде за

Я попробовал несколько вещей, но в этих минутах, не работаю ...

Я прикрепил исходный код, XAML и C#

код XAML:

<Grid KeyDown="Grid_KeyDown_1" > 
    <Viewport3D Name="viewport3D1"> 
     <Viewport3D.Camera> 
      <PerspectiveCamera x:Name="camMain" Position="6 5 4" LookDirection="-6 -5 -4"> 
      </PerspectiveCamera> 
     </Viewport3D.Camera> 
     <ModelVisual3D> 
      <ModelVisual3D.Content> 
       <DirectionalLight x:Name="dirLightMain" Direction="-1,-1,-1"> 
       </DirectionalLight> 
      </ModelVisual3D.Content> 
     </ModelVisual3D> 
     <ModelVisual3D> 
      <ModelVisual3D.Content> 
       <GeometryModel3D> 
        <GeometryModel3D.Geometry> 
         <MeshGeometry3D x:Name="meshMain" 
          Positions="0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1" 
          TriangleIndices="2 3 1 2 1 0 7 1 3 7 5 1 6 5 7 6 4 5 6 2 0 2 0 4 2 7 3 2 6 7 0 1 5 0 5 4"> 
         </MeshGeometry3D> 
        </GeometryModel3D.Geometry> 
        <GeometryModel3D.Material> 
         <DiffuseMaterial x:Name="matDiffuseMain"> 
          <DiffuseMaterial.Brush> 
           <SolidColorBrush Color="Red"/> 
          </DiffuseMaterial.Brush> 
         </DiffuseMaterial> 
        </GeometryModel3D.Material> 
       </GeometryModel3D> 
      </ModelVisual3D.Content> 
      <ModelVisual3D.Transform> 
       <RotateTransform3D> 
        <RotateTransform3D.Rotation> 
         <AxisAngleRotation3D x:Name="rotate" Axis="0 1 0"/> 
        </RotateTransform3D.Rotation> 
       </RotateTransform3D> 
      </ModelVisual3D.Transform> 
     </ModelVisual3D> 
     </Viewport3D> 

     <Slider Grid.Row="1" Minimum="0" Maximum="360" Orientation="Horizontal" 
Value="{Binding ElementName=rotate, Path=Angle}" ></Slider> 

    </Grid> 

код C#:

private void Grid_KeyDown_1(object sender, KeyEventArgs e) 
    { 
     if(Keyboard.IsKeyDown(Key.S)) 
     { 
      Binding binding = new Binding { 
      Source=rotate, 
      Path=new PropertyPath("Angle") 
      }; 


     } 

    } 

Привязка рабочего тела слайдера, я хочу, когда нажимаем «S» для поворота куба

+0

Я не думаю, что вы понимаете концепцию связывания. ваша виртуальная машина должна содержать поворот proerpty, а ваши события нажатия клавиш должны изменить это. Когда у вас есть Bindings, у вас нет кода Behind. –

+0

Я думаю, что ты прав – user3094445

ответ

0

Используйте Dependency Property в коде позади, как этот

public double Angle 
{ 
    get { return (double)GetValue(AngleProperty); } 
    set { SetValue(AngleProperty, value); } 
} 
public static readonly DependencyProperty AngleProperty = 
    DependencyProperty.Register("Angle", typeof(double), typeof(MyClass), new PropertyMetadata(0.0)); 

А затем привязать вращение к тому, что вместо этого.

Затем в ключевой обработчик, вы можете увеличивать угол, что-то вроде этого:

Angle = (Angle + 1.0) % 360.0 
Смежные вопросы